2010-07-08 22 views
1

Je développe une application d'authentification CAC.Liste des certificats d'un CAC sans pin

Je cours RHEL 5.5 et ai un lecteur de carte attaché à ma machine. Lorsque j'insère une carte à puce/CAC, une notification contextuelle apparaît en haut à droite de la fenêtre où se trouve l'horloge et l'interface graphique "Smart Card Manager" est accessible en cliquant sur l'icône (carte avec verrou dessus) cela apparaît. Avec le gestionnaire de carte à puce affiché je peux voir la liste des certificats sur la carte aussi bien que les détails etc. SANS avoir à entrer une épingle.

Maintenant, d'autre part, lorsque dans mon code C++, lorsque j'utilise des bibliothèques nss pour obtenir le certificat d'emplacement et de liste, je ne peux pas obtenir la liste des certificats sans avoir à entrer la broche. Ce que je voudrais faire est d'obtenir la liste des certificats de la carte et de présenter cette liste à l'utilisateur dans une boîte de dialogue ALONG avec champ de texte de pin afin que l'utilisateur puisse entrer la broche, puis sélectionnez le certificat à utiliser pour Authentification TOUT EN UNE étape au lieu d'avoir à afficher une boîte de dialogue distincte pour la broche, puis la popup pour la sélection du certificat mais il semble que ce n'est pas possible avec les bibliothèques nss mais d'autre part. Est-ce que quelqu'un peut me diriger vers la bonne direction pour savoir s'il y a une API séparée que je peux utiliser pour obtenir la liste des certificats de CAC ??? Merci!

Répondre

2
  • Rechercher sur le Web pour « amis certs » ou « certs publiquement lisibles » fonctionnalité/mécanisme (0x1 < < 28 lors du chargement du module) - par défaut NSS suppose qu'un code PIN est nécessaire avant quoi que ce soit peut être lu à partir du jeton. Quelle est la stupidité à mon humble avis et la garder par défaut ...
  • Assurez-vous de prendre en compte les lecteurs de pinpad (chemin d'authentification protégé dans PKCS # 11) car vous souhaiterez, espérons-le, assurer une meilleure sécurité pour vos utilisateurs qui ont la capacité . Aucune zone de saisie de code PIN ne doit être affichée lorsqu'un lecteur de pinpad est connecté.
+0

martin, merci pour la réponse. Je dois admettre que je suis un peu novice à C++ et nss api donc je ne sais pas ce que (0x1 << 28) signifie. Je charge le module dans mon programme C++ en utilisant cette méthode: module = SECMOD_LoadUserModule (moduleSpecName, NULL, PR_TRUE); Comment définir ce drapeau en utilisant la méthode ci-dessus? Il n'y a pas de pinpad impliqué dans mon application. Ceci est une application de connexion Linux. Merci! – azm882

+0

De https://developer.mozilla.org/en/PKCS11_Module_Specs: slotParams - liste des paires nom/valeur séparées par des espaces où le nom est un ID de logement et la valeur est une liste de paramètres sparés de cet ID de logement. Les valeurs de slotParams valides sont les suivantes: slotFlags - liste des groupes de chiffrement séparés par des virgules, dont l'emplacement est supposé être l'implémentation par défaut pour (insensible à la casse). drapeaux valides sont: PublicCerts –

+0

dans le cas où une personne est à la recherche pour plus de détails, à la suite travaillé dans mon cas: static char moduleName [] = "bibliothèque = \"/usr/lib/pkcs11/libcoolkeypk11.so \ » name = \ "SmartCard" NSS = \ "slotParams = {0x1 = [slotFlags = 'PublicCerts']} \" "; module = SECMOD_LoadUserModule (moduleName, NULL, PR_TRUE); – azm882