3

我有一个包含我的小程序的双接口 Java 卡。我想对来自不同接口的单个​​命令有两个不同的 APDU 响应。

例如,当从接触式接口接收到命令时,我想00 10 00 00用“Contact”响应 APDU 命令,并在从非接触式接口接收到该命令时响应“ContactLess”。

那么,Java Card API 或Global Platform API 中是否有任何方法可以检测传入命令的接口?

4

1 回答 1

5

类中调用getProtocol()了一个方法javacard.framework.APDU

public static byte getProtocol()

返回 ISO 7816 传输协议类型,低半字节中的 T=1 或 T=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);
于 2016-01-06T07:07:12.883 回答