我正在编写一个与EMV卡对话的C#应用程序。该应用程序使用CardWerk智能卡API [http://www.smartcard-api.com/index.shtml]
编写应用程序向芯片提供选择的主卡应用程序命令。顺序如下:
大多数情况下,这很有效。但有时,我得到6A80错误作为对“GET RESPONSE”命令的响应。原因是什么?
以下是错误的日志:
CMD 00A40400 (SELECT FILE) 07 A0000000041010 (' ......')
RSP 6139
CMD 00C00000 (GET RESPONSE) 39
RSP 6A80
答案 0 :(得分:2)
我先问问CardWerk。状态代码很奇怪,因为它意味着“命令数据字段中的参数不正确”,我无法识别。如果之前建立了可信信道(这至少证明存在命令数据字段),这可能意味着用于安全消息传递的密钥是错误的。另一种解释可能是,另一个进程或线程也试图对卡进行操作并破坏您的结果(对卡的存在进行循环检查可能就是这样一个过程)。
如果您不依赖SELECT响应中的信息,您也可以尝试通过将P2设置为0C来抑制响应(如果您的卡支持)来减少效果,但这更像是一种解决方法,而不是溶液