我有一个包含我的小程序的双接口 Java 卡。我想对来自不同接口的单个命令有两个不同的 APDU 响应。
例如,当从接触式接口接收到命令时,我想00 10 00 00
用“Contact”响应 APDU 命令,并在从非接触式接口接收到该命令时响应“ContactLess”。
那么,Java Card API 或Global Platform API 中是否有任何方法可以检测传入命令的接口?
我有一个包含我的小程序的双接口 Java 卡。我想对来自不同接口的单个命令有两个不同的 APDU 响应。
例如,当从接触式接口接收到命令时,我想00 10 00 00
用“Contact”响应 APDU 命令,并在从非接触式接口接收到该命令时响应“ContactLess”。
那么,Java Card API 或Global Platform API 中是否有任何方法可以检测传入命令的接口?
类中调用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);