Метод процесса не получает полную команду APDU от хоста?

smartcard javacard apdu

385 просмотра

2 ответа

169 Репутация автора

Хост отправляет следующую команду апплету, чтобы выбрать файл EF

00 A4 02 00 02 40 01

Цель состоит в том, чтобы выбрать файл EF с идентификатором 40 01(который указывается в поле данных команды).

Но когда я отлаживаю метод процесса (APDU apdu), буфер APDU содержит только 5 первых байтов 00 A4 02 00 02. Поле данных установлено на 00 00. Поэтому мой апплет не может выбрать EF, используя EF ID.

Не могли бы вы сказать мне, что не так с моей командой APDU выше?

Автор: neo Источник Размещён: 08.12.2015 06:32

Ответы (2)


6 плюса

32589 Репутация автора

Решение

В зависимости от карты (или эмулятора) буфер APDU может содержать только поля заголовка APDU (CLA, INS, P1, P2, Lc). Даже если некоторые карты автоматически заполняют часть данных командного APDU в буфере APDU, вы не можете полагаться на это поведение.

Вместо этого вы должны явно setIncomingAndReceive()указать плате (или эмулятору), чтобы получить часть данных, вызвав метод объекта APDU. Но обратите внимание, что этот метод должен вызываться только для APDU случая 3 и случая 4 (т. Е. Команды APDU, которые содержат часть данных команды). Если нет поля данных команды, вы не должны вызывать этот метод (APDU для случая 1 и случая 2).

Автор: Michael Roland Размещён: 08.12.2015 08:16

0 плюса

1 Репутация автора

Чтобы получить данные в буфере APDU, вам нужно вызвать apdu.setIncomingAndReceive()и, как в спецификации EMV AID для апплета составляет 5-16 байт, он не может использовать менее 5 байт.

Автор: Raja P.B. Размещён: 04.01.2017 04:47
32x32