首页 文章

如何使用C中的单个APDU发送和获取数据?

提问于
浏览
0

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

我使用java和其他工具检查了卡片,并确认卡片没有任何内容 .

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

1 回答

  • 4

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

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

    这是reference of the command .

相关问题