我正在使用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 回答
当您发送具有命令数据的命令并且该命令也期望结果数据,并且使用T = 0协议进行通信时,则需要发送两个APDU . 一个用于命令本身,另一个用于检索结果 .
61XX
不是错误 . 它是一个(成功的)状态字,表示您有XX
个响应字节,可以使用GET RESPONSE
(INS=0xC0
)检索 .这是reference of the command .