首页 文章

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

提问于
浏览
2

我有一个包含我的applet的双界面Java卡 . 我希望对来自不同接口的单个命令有两个不同的APDU响应 .

例如,当从接触界面接收到命令时,我想用 00 10 00 00 APDU命令用"Contact"响应,并且当从非接触式接口接收到该命令时,响应"ContactLess" .

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

1 回答

  • 4

    javacard.framework.APDU 类中有一个名为 getProtocol() 的方法:

    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);
    

相关问题