0

我正在使用 winscard 编写 C++ 代码。我注意到,如果我使用 Scardtransmit 发送仅发送数据或仅接收数据的命令,则没有问题。我可以发送数据或得到正确的响应。但是,当命令既发送数据又期望响应时,我总是得到 61xx。我知道错误代码 61xx 意味着有一个 xx 字节的响应,其中 Le 不正确,并检查了所有可能的 Le,包括返回值 xx,但没有任何变化。例如,让 Apdu 的形式为 CLA INS P1 P2 Lc Data Le,我得到 61XX,然后我发送 CLA INS P1 P2 Lc Data XX,我再次得到 61XX。

我使用java和其他工具检查了卡,并验证卡没有任何东西。

据我了解,为 Lc 和 Le 分配了一个字节 P3。有没有办法从 DATADATA 命令获得响应(除了 SW1SW2)?

4

1 回答 1

4

当您发送具有命令数据的命令并且该命令也需要结果数据,并且使用 T=0 协议进行通信时,您需要发送两个 APDU。一个用于命令本身,另一个用于检索结果。

61XX不是错误。它是一个(成功的)状态字,表示您有XX可以使用GET RESPONSE( INS=0xC0) 检索的响应字节。

这是命令的参考

于 2013-07-31T11:53:03.343 回答