我想重新开发新的桌面应用程序,以便从EMV智能卡中读取信息,并且我有来自以前(工作)应用程序的日志。
假设EMV智能卡中有一个AID = 44 44 44 44 44 44 44 44(DDDDDDDD)的应用程序。
我正在发送APDU命令:00 A4 04 00 08 44 44 44 44 44 44 44 44 00并获得超时异常(超时= 60s)。
我尝试发送APDU命令:00 A4 04 00 08 44 44 44 44 44 44 44 44并得到响应代码= 61 37。
我试图选择文件1PAY.SYS.DDF01,立即得到响应= 6a82(它是对的)。
答案 0 :(得分:4)
错误代码61XX表示在使用Le = XX:
调用Get Response命令后,您将收到数据示例:
--> 00 A4 04 00 08 44 44 44 44 44 44 44 44
<-- 61 37
--> 00 C0 00 00 37
<-- some data of length 0x37 and status code 90 00.
相关问题: About Get Response command in javacard
Oracle的文档:
可能有多个APDU连接同时打开使用 具有相同卡的不同逻辑信道。但是,自APDU以来 协议是同步的,不能交错命令和 他们在逻辑信道上的响应APDU。收到之间 命令APDU和向该命令发送响应APDU, 只有一个逻辑通道处于活动状态对于T = 0协议,对于情况4和 case 2命令APDU卡可以用'61 XX'或'6C XX'响应。 这些特殊情况必须由实现中的 以下方式:
'61 XX':在发送任何其他命令之前,实现必须向卡发送GET RESPONSE以获取响应数据。 '6C XX':在任何其他命令出现之前,设置必须重新发送命令后,将Le等于从卡接收的XX 发送。
在上面讨论的两种情况中,实施必须确保 在发送命令APDU,接收状态字'61 XX'之间 或'6C XX',并发送GET RESPONSE或重新发送命令APDU Le分别设置为XX,不得有任何其他APDU 在任何逻辑信道上与卡交换。如果是状态字 '61 XX'是从卡上连续多次收到的 实现必须累积从中收到的所有响应数据 卡返回到J2ME应用程序之前。 J2ME应用程序 必须仍然忘记上面提到的交流,而且应该只是 得到上述操作后收到的回复。
答案 1 :(得分:1)
我将库从RXTXserial更改为JSSC,它解决了我的问题。现在我得到没有GET RESPONSE请求的回复。谢谢你们。