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

Posted

技术标签:

【中文标题】如何检测传入命令的接口?【英文标题】:How to detect interface of incoming command? 【发布时间】:2016-01-05 18:32:59 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于如何检测传入命令的接口?的主要内容,如果未能解决你的问题,请参考以下文章

APPE FTP命令传输完成检测服务器端

如何将两个整数参数传入并使用 C# 命令行程序? [复制]

swig 生成的python接口,在python中怎么传入void*入参?

如何使用python 执行命令行传入的代码

常用Linux性能检测命令

linux网络命令