v1.9.5: T=0 framing — immediate SW, short responses, Le=256
- Decode the first post-header byte as SW1 before the ACK/data decision: a case-2 rejection (6A82/6CXX) carries no ACK and used to be read as command data, silently consuming the exchange and the next one. - Short responses (Lr < Le): after the P3-byte read, split the buffer at the first plausible SW1 followed by a plausible CLA, replay the tail and flag BAD_FCS; previously the SW scan discarded the real SW, merged the following exchanges and lost the exchange at EOF. - P3=0 is Le=256 for an outgoing command: keep the response data (read until SW) instead of discarding it, including data bytes equal to INS. - ~INS ACK: one data byte per ACK via the new helpers; case-4 inline data is appended (permissive; ISO 7816-3 §12.2 maps case 4 to GET RESPONSE). - tests: four TestDecodeStep vectors (immediate SW, short read + split + replay, Le=256 data incl. an INS-valued byte); 99/99. - AGENTS v1.9.5 + T=0 section, README/README_RUS bullets; baseline regenerated (xiaomi_mi_a1_coldboot 473 -> 475 APDUs, all else identical); compare_baseline: IDENTICAL.
This commit is contained in:
1 parent
883033e712
commit
b574f900a1
6 files changed
+294
-98
No files matched your search
@@ -243,6 +243,12 @@ USB у FX2 при длительной высокой частоте дискр
|
||||
(`discarded byte 0x…: reason`); отбрасывания холостых 0x00/0xFF
|
||||
ограничены по частоте, отбрасывания не-холостых байтов всегда дают
|
||||
аннотацию декодера.
|
||||
- Карта может завершить команду словами SW1 SW2 на первом процедурном
|
||||
байте (ISO 7816-3 §10.3.3), в том числе для case-2 команды с P3 > 0:
|
||||
SW оформляется как статусное слово, а не читается как данные. Ответ
|
||||
**короче Le** разделяется по статусному слову и пакет помечается
|
||||
`BAD_FCS` (следующие обмены сохраняются); данные ответа при `P3=0`
|
||||
(Le=256) сохраняются.
|
||||
|
||||
Производительность: в режиме native CLK декодер один раз калибрует число
|
||||
отсчётов на фронт CLK по первому кадру ATR, а затем продвигает битовую
|
||||
|
||||
Reference in new issue
Block a user