智能卡错误


8

我有一个CAC智能卡和一个SCM Microsystems SCR3310 USB读卡器。我正在运行Windows 7 Ultimate SP1。

此设置过去可以正常工作。当我插入我的CAC时,我的证书将立即传播到证书存储中(由Certificate Manager证明certmgr.msc),并且我可以登录到需要使用CAC进行访问的网站。

最近,我停止访问这些网站。在证书管理器中查看时,我发现只有一个或有时两个证书存在。如果删除它们,然后重新插入卡,则可能会出现其他证书。

我刚回来,用相同的型号替换了阅读器,所以我知道这不是罪魁祸首。

我终于想到查看系统日志,并在插入智能卡时注意到以下错误:

在此处输入图片说明


错误,按时间顺序排列:

Smart Card Service    Event ID: 610
   Smart Card Reader 'SCM Microsystems SCR33xx v2.0 USB SC Reader 0' rejected
   IOCTL TRANSMIT: Incorrect function.  If this error persists, your smart card
   or reader may not be functioning correctly.

   Command Header: 00 c0 00 00

WudfUsbccidDrv        Event ID: 11
   A Request has returned failure.
   MsgType: 0x80
   ICCStatus: 0x0
   CmdStatus: 0x1
   Error: 0xf6               // ICC_PROTOCOL_NOT_SUPPORTED
   SW1: 0x0
   SW2: 0x0

WudfUsbccidDrv        Event ID: 11
   An operation has failed (0x0, 0x0, 0x0, 0x0).
   ScT0Transmit: Failed to send request at TPDU level.
   HResult: The specified request is not a valid operation for the target device.
   // Note: this one comes from WUDFUsbccidDriver.dll CMyDevice::UsbScT0Transmit+7D0h

WudfUsbccidDrv        Event ID: 10
   Request[0](CLS=0x0,INS=0xc0,P1=0x0,P2=0x0,Lc=0,Le=256,.NETServiceMethod=0x0)

看来硬件在期间指示发生了故障IOCTL TRANSMIT,并通过用户模式驱动程序框架进行了故障转移。

编辑:咨询CCID规范,似乎该卡以响应 bmCommandStatus = 1 - Failed (error code provided by the error register)。和Error = ICC_PROTOCOL_NOT_SUPPORTED -10 (F6h)。我假设驱动程序将此错误转换为“ HResult:指定的请求不是目标设备的有效操作。” 信息。

同样,正在发送的命令是INS = 0xC0,即GET RESPONSE

如何说不支持协议?驾驶员与工作时有何不同?请注意,我也刚刚使用新的CAC进行了尝试,并且看到了类似的行为。读卡器或驱动程序有问题吗?


考虑到我刚刚更换了读卡器(并重新安装了驱动程序,重新启动等),我的智能卡是否有问题?我猜想不会,因为它的工作与另一个系统上的其他读者。我没有在同一系统上尝试过其他阅读器。

实际上,连接到同一台物理计算机上的Windows 7 VM 的同一读取器就可以正常工作!显然有东西坏了,这让我发疯想要弄清楚是什么。

那是什么问题呢?


我刚刚与Microsoft的Jasper V进行了愉快的聊天,对这个问题的了解几乎为零:pastebin.com/dvU3dNfa
Jonathon Reinhart 2014年

我有同样的问题,您找到解决方案了吗?
Tobia'Apr

我安装了Linux。
乔纳森·莱因哈特

@JonathonReinhart,您好,很抱歉劫持了这篇文章,但我有完全相同的问题,您找到解决方案了吗?
Lankymart

Answers:


2

以防万一有人坚持该问题-我一直在努力整整一天。

解决方法如下:

  1. 对于64位Windows-跳至注册表项,网址为

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers
    

应该已经有一些读者了。如果没有,那么这就是为什么您可能已安装所有驱动程序但仍然无法正常运行的原因。

  1. 转到Device Manager,找到有问题的读者,然后在“详细信息”选项卡中查找该字符串:Bus reported device description

  2. 为上面的密钥创建一个子密钥。名称应与此完全相同Bus reported device description。然后在末尾添加一个计数器。所以关键应该是这样的:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers\O2Micro CCID SC Reader 0
    
  3. 现在创建几个字符串值:第一个为设备名称,第二个为组。这是我的示例:

    Device = O2Micro CCID SC Reader 0
    
    Groups = SCard$DefaultReaders
    

而已。要使其正常工作,请断开阅读器的连接并重新连接。如果是内部设备,则可能必须重新启动计算机。这是.reg文件示例(将设备名称和设备号更改为您自己的值):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers\O2Micro CCID SC Reader 0]
"Device"="O2Micro CCID SC Reader 0"
"Groups"=hex(7):53,00,43,00,61,00,72,00,64,00,24,00,44,00,65,00,66,00,61,00,75,\
00,6c,00,74,00,52,00,65,00,61,00,64,00,65,00,72,00,73,00,00,00,00,00

尽管您的问题非常具体,但感谢您分享您的见解。+1
达沃·乔西波维奇

很抱歉,但是我不知道这应该完成什么。我的设备已明确连接,并且驱动程序正在与阅读器通信。
乔纳森·莱因哈特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.