繁体   English   中英

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

[英]How to send and get data using a single APDU in C++?

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

我使用Java和其他工具检查了卡,并确认卡上没有任何东西。

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

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

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

这是命令参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM