Je dois déterminer si la carte à puce comporte un certificat donné. Pour cela, je suis d'abord l'acquisition de la HCRYPTPROV (gérer le CSP) en utilisant CryptAcquireContext, puis en l'utilisant pour ouvrir le magasin du système (OpenSystemStore), puis en énumérant les certificats.Certificats de numérotation disponibles uniquement sur la carte à puce
Fonctionne parfaitement sur Windows XP. Sur Windows 7, cela pose des problèmes en raison de certificats périmés/anciens stockés en magasin. Windows stocke/copie les certificats dans son magasin à partir de la carte à puce. Cela signifie que si j'ai deux certificats Cert1 et Cert2 sur Smart Card et j'ai utilisé une carte à puce pour se connecter à Windows. alors Windows stocke ces certs dans ses magasins, nous pouvons le voir en allant sur IE-> Internet Options-> Contents-> Certificates. Ensuite, si je supprime le Cert2 de la carte à puce, alors aussi Cert2 est montré dans Windows Store et cette chose est en train de casser mon code.
Je dois donc énumérer les certificats qui sont disponibles uniquement sur la carte à puce et non dans le magasin Windows.
N'a pas programmé Windows pendant un certain temps, mais normalement un certificat sur une carte à puce est accompagné d'une clé privée pour faire la signature ou le décryptage réel. Pouvez-vous peut-être essayer d'accéder ou d'utiliser la clé privée et voir ce qui se passe? –
Merci owlstead. Cela a fonctionné pour moi. J'ai utilisé l'API CryptAcquireCertificatePrivateKey pour vérifier la clé privée correspondante pour un cert donné. Il le retournera avec succès s'il est disponible sur la carte à puce – MLS
Heureux de vous aider Mohammed. –