如何检测传入命令的接口?

Abr*_*ham 3 apdu javacard globalplatform

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

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

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

voj*_*jta 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);
Run Code Online (Sandbox Code Playgroud)