智能卡选择命令偶尔会返回6A80错误

时间:2014-07-08 10:56:07

标签: c# smartcard

我正在编写一个与EMV卡对话的C#应用​​程序。该应用程序使用CardWerk智能卡API [http://www.smartcard-api.com/index.shtml]

编写

应用程序向芯片提供选择的主卡应用程序命令。顺序如下:

  1. 将选择命令发送到卡
  2. 如果响应代码是61XX,则给出“GET RESPONSE”命令,其中XX为预期长度。
  3. 阅读数据。
  4. 大多数情况下,这很有效。但有时,我得到6A80错误作为对“GET RESPONSE”命令的响应。原因是什么?

    以下是错误的日志:

    CMD 00A40400 (SELECT FILE) 07 A0000000041010 (' ......')
    RSP 6139
    CMD 00C00000 (GET RESPONSE) 39 
    RSP 6A80
    

1 个答案:

答案 0 :(得分:2)

我先问问CardWerk。状态代码很奇怪,因为它意味着“命令数据字段中的参数不正确”,我无法识别。如果之前建立了可信信道(这至少证明存在命令数据字段),这可能意味着用于安全消息传递的密钥是错误的。另一种解释可能是,另一个进程或线程也试图对卡进行操作并破坏您的结果(对卡的存在进行循环检查可能就是这样一个过程)。

如果您不依赖SELECT响应中的信息,您也可以尝试通过将P2设置为0C来抑制响应(如果您的卡支持)来减少效果,但这更像是一种解决方法,而不是溶液