J'ai une carte à puce CAC et un lecteur de carte USB SCM Microsystems SCR3310 . J'utilise Windows 7 Ultimate avec SP1.
Cette configuration fonctionnait très bien. Lorsque j'insérais mon CAC, mes certificats se propageaient immédiatement vers le magasin de certificats (comme en témoigne le gestionnaire de certificats certmgr.msc
), et je pouvais me connecter à des sites Web nécessitant un CAC pour y accéder.
Récemment, j'ai cessé de pouvoir accéder aux sites Web. En regardant dans le Gestionnaire de certificats, je vois qu'un seul, ou parfois deux de mes certificats sont présents. Si je les supprime et que je réinsère ma carte, un certificat différent peut apparaître.
Je viens de rentrer et j'ai remplacé le lecteur par le même modèle, donc je sais que ce n'est pas le coupable.
J'ai finalement pensé à consulter le journal système et j'ai remarqué les erreurs suivantes lors de l'insertion de la carte à puce:
Les erreurs, par ordre chronologique:
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)
Il semble que le matériel ait indiqué une défaillance au cours de la IOCTL TRANSMIT
, qui s'est répercutée dans le cadre du pilote en mode utilisateur.
Edit: En consultant la spécification CCID, il semble que la carte répond avec
bmCommandStatus = 1 - Failed (error code provided by the error register)
. Et Error = ICC_PROTOCOL_NOT_SUPPORTED -10 (F6h)
. Je suppose que le pilote traduit cette erreur en "HResult: la demande spécifiée n'est pas une opération valide pour le périphérique cible." message.
En outre, la commande envoyée était INS = 0xC0, qui est GET RESPONSE .
Comment peut-il dire que le protocole n'est pas pris en charge? Que fait le conducteur différemment de son fonctionnement? Notez que je viens également d'essayer cela avec un nouveau CAC, et je vois un comportement similaire. Un problème avec le lecteur de carte ou le pilote?
Étant donné que je viens de remplacer le lecteur (et les pilotes réinstallés, redémarrés, etc.), y a-t-il un problème avec ma carte à puce? Je suppose pas, parce qu'il fait le travail avec un autre lecteur sur un autre système. Je n'ai pas essayé un lecteur différent sur le même système.
En fait, le même lecteur connecté à une machine virtuelle Windows 7 sur la même machine physique fonctionne très bien! Quelque chose est clairement cassé, et ça me rend fou d'essayer de comprendre quoi.
Alors quel est le problème?