emv PDOL требует 2 байта возможностей терминала

У меня есть забавный случай, который, я думаю, я пропускаю информацию где-то в спецификации.

Моя карта EMV предоставляет этот PDOL

9F33 02 9F35 01 9F40 01 -> Total length = 4

Это мои данные, связанные с транзакциями в терминале

Terminal capabilities : 9F33 -> 0xA0 0xA0 0xC0 
Additional Terminal Capabilities  : 9F35 -> 0x16  
Terminal Type                     : 9F40 -> 0x70 0x00 0x80 0xB0 0x01  

Когда я получаю передачу параметров обработки (A0 A0) байтов 1 и 2 для 2 байтов 9F33 16 для 9F35 и 70 для 9F40, я получаю слово состояния 69 85 .

Вот моя команда (в Hex)

80 A8 00 00 06 83 04 A0 A0 16 70 00 -> s1 s2 = 69 85

а также

Когда я передаю A0 C0 (байт 2 и байт 3) для 9F33 , я получаю успех (90 00)

80 A8 00 00 06 83 04 A0 C0 16 70 00 -> s1 s2 = 90 00

Мой вопрос :

Как я точно знаю, какие байты необходимы, особенно если требуемая длина меньше фактической длины ?. Где он задокументирован в Спецификации ?. Я только что понял это по интуиции.

Заранее спасибо.

emv,

0

Ответов: 2


0

Любые DOL, когда фактические данные не доступны, должны быть заполнены нулями. Когда фактическая длина данных больше, чем запрашиваемая в DOL, данные должны быть усечены до длины, ожидаемой в DOL

Для правил использования DOL см.

EMV 4.3 Книга 3

5.4 Правила использования списка объектов данных (DOL)

Кстати, вы нашли ответ на вопрос, почему ответ GPO изменяется при изменении значения 9F33?


0 принят

Это правила из книги 3 главы 5.4, как вы правильно указали. «c» - это объяснение моих результатов. В моем случае мне пришлось обрезать правые байты ( байт 2 и 3 ), потому что мой объект данных (9F33) не имеет числового формата.

a. If the tag of any data object identified in the DOL is unknown to the terminal or represents a constructed data object, the terminal shall provide a data element with the length specified and a value of all hexadecimal zeroes.
b. If a data object is in the list and is meaningful to the terminal but represents optional static data that is absent from the terminal, the portion of the command field representing the data object shall be filled with hexadecimal zeroes.
c. If the length specified in the DOL entry is less than the length of the actual data object, the leftmost bytes of the data element shall be truncated if the data object has numeric (n 1) format, or the rightmost bytes of the data shall be truncated for any other format.
d. If the length specified in the DOL entry is greater than the length of the actual data, the actual data shall be padded:
? with leading hexadecimal zeroes if the data has numeric format
? with trailing hexadecimal 'FF's if the data has compressed numeric (cn 1) format
? with trailing hexadecimal zeroes for any other format (an, ans or b including bit combination data 1)
e. If a data object is in the list and is meaningful to the terminal but represents data that is not applicable to the current transaction, the portion of the command field representing the data object shall be filled with hexadecimal zeroes.
EMV
Похожие вопросы
Яндекс.Метрика