通过 AID 命令选择不起作用

Spa*_*arX 1 apdu smartcard emv

我想重新开发新的桌面应用程序以从 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,立即得到响应 = 6a82(正确)。

voj*_*jta 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.
Run Code Online (Sandbox Code Playgroud)

相关问题: 关于 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 或重新发送命令 APDU 之间,分别将 Le 设置为 XX,必须不与卡在任何逻辑通道上进行任何其他 APDU 交换。如果连续多次从卡接收到状态字“61 XX”,则实现必须累积从卡接收到的所有响应数据,然后再将其返回给 J2ME 应用程序。J2ME 应用程序必须保持对上述交换的无视,并且应该只获得作为上述操作的结果收到的响应。