Tengo una tarjeta inteligente CAC y un lector de tarjetas USB SCM Microsystems SCR3310 . Estoy ejecutando Windows 7 Ultimate con SP1.
Esta configuración solía funcionar bien. Cuando insertaba mi CAC, mis certificados se propagaban inmediatamente al almacén de certificados (como lo demuestra el Administrador de certificados certmgr.msc
), y podía iniciar sesión en sitios web que requerían un CAC para acceder.
Recientemente, dejé de poder acceder a los sitios web. Mirando en el Administrador de certificados, veo que solo uno, o algunas veces dos de mis certificados están presentes. Si los elimino y vuelvo a insertar mi tarjeta, puede aparecer un certificado diferente.
Acabo de regresar y reemplacé el lector con el mismo modelo, así que sé que no es el culpable.
Finalmente pensé en mirar el registro del sistema y noté los siguientes errores al insertar la tarjeta inteligente:
Los errores, en orden cronológico:
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)
Parece que el hardware indicó una falla durante el IOCTL TRANSMIT
, que se filtró a través del marco del controlador en modo de usuario.
Editar: consultando la especificación CCID, parece que la tarjeta está respondiendo con
bmCommandStatus = 1 - Failed (error code provided by the error register)
. Y Error = ICC_PROTOCOL_NOT_SUPPORTED -10 (F6h)
. Supongo que el controlador traduce este error en "HResult: la solicitud especificada no es una operación válida para el dispositivo de destino". mensaje.
Además, el comando que se envió fue INS = 0xC0, que es GET RESPONSE .
¿Cómo puede decir que el protocolo no es compatible? ¿Qué hace el controlador de manera diferente que cuando funcionaba? Tenga en cuenta que también acabo de probar esto con un nuevo CAC y veo un comportamiento similar. ¿Un problema con el lector de tarjetas o el controlador?
Teniendo en cuenta que acabo de reemplazar el lector (y reinstalé los controladores, reinicié, etc.) ¿hay algún problema con mi tarjeta inteligente? No estoy asumiendo, porque hace el trabajo con otro lector en otro sistema. No he probado un lector diferente en el mismo sistema.
De hecho, ¡el mismo lector conectado a una VM de Windows 7 en la misma máquina física funciona bien! Algo está claramente roto, y me está volviendo loco tratar de descubrir qué.
Entonces, ¿cuál es el problema?
Respuestas:
En caso de que alguien se quede con ese problema, he estado tratando de solucionarlo durante todo un día.
Aquí está la solución:
Para Windows de 64 bits: salte a la clave de registro en
Ya debería haber algunos lectores. Y si no es así, esa es la razón por la que puede tener todos los controladores instalados, pero aún no funciona en absoluto.
Ir a
Device Manager
, encontrar el lector en cuestión y luego mirar hacia fuera para esta cadena en la pestaña Detalles:Bus reported device description
.Cree una subclave para la clave anterior. El nombre debe ser exactamente igual a eso
Bus reported device description
. Luego agrega un contador al final. Entonces la clave debería ser como esta:Ahora cree un par de valores de cadena: el primero con el nombre del dispositivo y el segundo para los grupos. Aquí está mi ejemplo:
Eso es. Para que funcione, desconecte el lector y vuelva a conectarlo. En el caso de dispositivos internos, es posible que deba reiniciar la máquina. Y aquí está el
.reg
ejemplo del archivo (cambie el nombre y el número del dispositivo a sus propios valores):fuente