1

我想重新开发新的桌面应用程序以从 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 并收到超时异常(超时 = 60 秒)。

我尝试发送 APDU 命令:00 A4 04 00 08 44 44 44 44 44 44 44 44 并得到响应代码 = 61 37。

我尝试选择文件 1PAY.SYS.DDF01,立即得到 response = 6a82(它是正确的)。

4

2 回答 2

5

错误代码 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.

相关问题: 关于 javacard 中的 Get Response 命令

Oracle 提供的文档:

使用同一张卡的不同逻辑通道可能同时打开多个 APDU 连接。然而,由于 APDU 协议是同步的,因此命令和它们的响应 APDU 不能跨逻辑通道交错。在收到命令 APDU 和发送对该命令的响应 APDU 之间,只有一个逻辑通道处于活动状态。对于 T=0 协议,对于情况 4 和情况 2 命令 APDU,卡可能会响应“61 XX”或“6C XX”。这些特殊情况必须由实现以下列方式处理:

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

在上面讨论的两种情况下,实现必须确保在发送命令 APDU、接​​收状态字“61 XX”或“6C XX”以及分别发送 GET RESPONSE 或重新发送 Le 设置为 XX 的命令 APDU 之间,必须不能与卡在任何逻辑通道上进行任何其他 APDU 交换。如果连续多次从卡接收到状态字“61 XX”,则实现必须累积从卡接收到的所有响应数据,然后再将其返回给 J2ME 应用程序。J2ME 应用程序必须忽略上述交换,并且只应收到作为上述操作结果的响应。

于 2015-07-02T08:12:36.583 回答
1

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

于 2015-07-14T06:00:31.200 回答