2016-01-05 8 views
2

У меня есть Java-карта с двумя интерфейсами, содержащая мой апплет. Я хочу иметь два разных ответа APDU для одной команды из разных интерфейсов.Как определить интерфейс входящей команды?

Например, я хочу ответить на команду 00 10 00 00 APDU с «Контакт», когда команда получена от контактного интерфейса и ответьте «ContactLess», когда эта команда получена от бесконтактного интерфейса.

Итак, есть ли какой-либо метод в Java Card API, или Global Platform API, обнаружить интерфейс входящего командования?

ответ

4

Существует метод, называемый getProtocol() в javacard.framework.APDU классе:

public static byte getProtocol()

Возвращает транспортный тип протокола ISO 7816, Т = 1 или Т = 0 в низком полубайте и транспортные средства массовой информация в верхний полубайт в использовании.

Интерфейс кодируется в верхней части байта, возвращенного байта:

final byte transportMedia = (byte) (APDU.getProtocol() & APDU.PROTOCOL_MEDIA_MASK); 
final boolean isContactless = (transportMedia == APDU.PROTOCOL_MEDIA_CONTACTLESS_TYPE_A) || 
     (transportMedia == APDU.PROTOCOL_MEDIA_CONTACTLESS_TYPE_B);