Hola Estoy intentando acceder al almacén de claves desde mi tarjeta inteligente en Java. Y estoy usando el siguiente código ..Token de acceso a Java PKCS11 No encontrado Proveedor
estoy usando la aplicación pkcs11 de OpenSC http://www.opensc-project.org/opensc
Archivo windows.cnf = Código
name=dnie
library=C:\WINDOWS\system32\opensc-pkcs11.dll
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);
Cuando la ejecución se realiza por línea con =) (= me arroja la siguiente excepción
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)
Creo que el problema es "DNIe SunPKCS11-", pero no sé que poner allí. Había probado con una gran cantidad de combinaciones ...
alguien me puede ayudar ...
Encontré el archivo .dll para mi lector de tarjetas inteligentes (asepkcs.dll). ¡Y lo intenté de nuevo con el mismo código (con las recomendaciones de @ ColinD) y funciona! Entonces el problema era el .dll. Debes tener la dll correcta para tu dispositivo. – oracleruiz