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

时间:2016-01-05 18:33:00

标签: javacard apdu globalplatform

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

例如,我想用"联系"来回复HandlerMethodArgumentResolver APDU命令。当从联系人界面收到命令并响应" ContactLess"从非接触式接口收到此命令时。

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

1 个答案:

答案 0 :(得分:4)

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