Java Jeton d'Accès PKCS11 Pas trouvé de Fournisseur
Bonjour, je suis en train d'essayer d'accéder au fichier de ma carte à puce Java. Et je suis en utilisant le code suivant..
Je suis en utilisant le Pkcs11 mise en œuvre de OpenSc http://www.opensc-project.org/opensc
Fichier windows.cnf =
name=dnie
library=C:\WINDOWS\system32\opensc-pkcs11.dll
Code Java =
String configName = "windows.cnf"
String PIN = "####";
Provider p = new sun.security.pkcs11.SunPKCS11(configName);
Security.addProvider(p);
KeyStore keyStore = KeyStore.getInstance("PKCS11", "SunPKCS11-dnie"); =)(=
char[] pin = PIN.toCharArray();
keyStore.load(null, pin);
Lors de l'exécution passe par la ligne avec =)(= me jette à l'exception suivante
java.security.KeyStoreException: PKCS11 not found
at java.security.KeyStore.getInstance(KeyStore.java:635)
at ObtenerDatos.LeerDatos(ObtenerDatos.java:52)
at ObtenerDatos.obtenerNombre(ObtenerDatos.java:19)
at main.main(main.java:27)
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-dnie
at sun.security.jca.GetInstance.getService(GetInstance.java:70)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:190)
at java.security.Security.getImpl(Security.java:662)
at java.security.KeyStore.getInstance(KeyStore.java:632)
Je pense que le problème est "SunPKCS11-dnie", mais je ne sais pas à y mettre. J'avais essayé avec beaucoup de combinaisons...
Quelqu'un peut m'aider...
OriginalL'auteur oracleruiz | 2011-01-28
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr que le problème est le nom. Il semble correct. ColinD la suggestion de pour passer le
Provider
instance doit l'exclure comme un problème.Je suppose que le problème est avec le PKCS11 de soutien. Comme, vous n'avez pas de carte dans votre lecteur, ou le code natif ne peut pas accéder au lecteur. Avez-vous essayé d'utiliser ce pilote en collaboration avec certains "bien connues" du logiciel, à l'instar de Firefox ou de Thunderbird modules de sécurité?
OriginalL'auteur erickson
J'avais aussi l'erreur comme ci-dessous:
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11
Je suis en cours d'exécution de l'application à partir d'un pot à travers le fichier bat.
Je fichier bat, j'ai remplacé le code :
java - jar sign.jar
avec le code:
java -Djava.security.debug=sunpkcs11,pkcs11 -jar SigningUtility.jar
Et il a résolu le problème.
L'ajout de la
-Djava.security.debug=sunpkcs11,pkcs11
a également travaillé pour moi (sans aucune autre modification à travailler dir ou exécutable java -- à l'aide de java 8 BTW).OriginalL'auteur BK Elizabeth
Pourquoi ne pas vous venez de passer le
Provider
directement comme deuxième argument Fichier de stockage des clés.getInstance(String, Fournisseur). Dans votre code, vous venais de faire:Que voulez-vous dire exactement? peut-être, KeyStore keyStore = fichier de clés.getInstance("PKCS11", "opensc") ??
a une surcharge de
getInstance
qui prend unProvider
directement en tant que deuxième argument: fichier de clés.getInstance(String, Fournisseur). Voir mon edit, si @erickson est juste qu'il pourrait être quelque chose d'autre, auquel cas ce serait encore échouer.Il Ne fonctionne pas. Je pense que @erickson est droit.
Ouais. En regardant plus loin, cette exception est à peu près exactement à ce que je vois quand il n'y a pas de carte dans le lecteur.
OriginalL'auteur ColinD
C'est prévu comme commentaire à la BK Elizabeth réponse (pas de commentaire pour le moment en raison de la réputation).
Pourquoi faut-il travailler sur l'activation du système de débogage de la propriété, sans slotId? C'est un effet de bord (reportez-vous à cette réponse: https://stackoverflow.com/a/16776155/5658642).
OriginalL'auteur beat
Essayer le code ci-dessous:
il fonctionne très bien pour moi.
OriginalL'auteur ARAVIND