Здравствуйте, я пытаюсь получить доступ к хранилищу ключей с моей смарт-карты на Java. И я использую следующий код ..Java Access Token PKCS11 Не найдено провайдера
Я использую реализацию PKCS11 из OpenSC http://www.opensc-project.org/opensc
Файл windows.cnf =
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);
Когда исполнение выполняется по линии с =) (= бросает мне следующее исключение
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)
Я думаю, что проблема «SunPKCS11-DNIe», но я не знаю, чтобы поставить там. Я попытался с большим количеством комбинаций ...
Любой человек может помочь мне ...
Я нашел .dll для своего считывателя смарт-карт (asepkcs.dll). И я попробовал снова с тем же кодом (с рекомендациями @ ColinD) и Works! Таким образом, проблема была .dll. У вас должна быть правильная dll для вашего устройства. – oracleruiz