2015-07-02 29 views
1

我要重新开发新的桌面应用程序,从EMV智能卡和我从以前的(工作)应用日志读取信息选择。由AID命令不工作

假设,存在与AID应用程式= 44 44 44 44 44 44 44 44(DDDDDDDD)在EMV智能卡。

我送APDU命令:00 A4 04 00 08 44 44 44 44 44 44 44 44 00,并获得超时异常(超时= 60秒)。

我试图发送APDU命令:00 04 A4 00 08 44 44 44 44 44 44 44 44,并获得响应代码= 61 37.

我试图选择文件1PAY.SYS.DDF01,立刻得到了响应= 6a82(这是对的)。

回答

0

我将库从RXTXserial更改为JSSC,它解决了我的问题。现在我得到没有GET RESPONSE请求的回应。感谢你们。

2

错误代码61XX意味着调用获得响应命令勒= XX后,您会收到您的数据:

例子:

--> 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和 情况2的命令APDU,卡可以用'61 XX'或'6C XX'进行响应。 这些特殊情况必须由下列方式在 落实情况处理:

'61 XX':实现必须GET RESPONSE发送到卡发送的任何其他命令之前获得响应数据。 '6C XX':在发送任何其他命令 之前,将Le等于从卡接收的XX设置为Le后,必须重新发送命令。

在这两种以上所讨论的情况下,实现必须确保 该发送命令APDU,接收状态字'61之间XX” 或‘6C XX’,并发送GET RESPONSE或勒重新发送命令APDU 分别设置为XX,在卡的任何逻辑信道上都不得有任何其他APDU 交换。如果状态字 '61 XX”从卡接收多次连续的 实现必须将其返回到J2ME应用程序之前所积累的一切从 卡接收响应数据。 J2ME应用程序 必须不知道上面提到的交换,并且应该只有 才能得到上述操作的结果。

+0

或者非常简洁:这是T = 0协议,您必须明确获取卡片响应,并指定长度。 – guidot

+0

@guidot你能提供更多的细节吗? – SparX

+0

@vojta我试过你的例子,但是在00 C0 00 00 37. – SparX