javacard - 如何检测传入命令的接口(interface)?

标签 javacard apdu globalplatform

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

例如,当从接触界面接收到命令时,我想用“Contact”响应 00 10 00 00 APDU 命令,当从非接触界面接收到该命令时,我想响应“ContactLess” .

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

最佳答案

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

public static byte getProtocol()

Returns the ISO 7816 transport protocol type, T=1 or T=0 in the low nibble and the transport media in the upper nibble in use.

接口(interface)在返回字节的高半字节中编码:

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

关于javacard - 如何检测传入命令的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618848/

相关文章:

nfc - pcsc-lite 和 libnfc 的区别

javacard - 有什么方法可以通知主机在Java Card中执行方法的开始时间和结束时间吗?

math - 在没有浮点类型的javacard中计算sqrt和arcTan

applet - 如何在JavaCard中存储大于128字节的数据

apdu - 通过PDOL为EMV卡(APDU)生成 "GET PROCESSING OPTIONS"(GPO)

smartcard - 智能卡预个性化和历史字节

java - 在 Java Card 2.2.1 平台中存储日期和时间

smartcard - 使用相同的 T=1 APDU 发送和接收数据

filesystems - 智能卡及其文件

javacard - 仅允许在 GlobalPlatform 2.2.1 管理的 JavaCard 上安装签名的小程序