При попытке создать пару ключей rsa с поставщиком Sun PKCS11, метод generateKeyPair()
выдает ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_USER_NOT_LOGGED_IN
Мой код выглядит так:
Provider prov = ... // initialize provider
KeyStore ks = KeyStore.getInstance("PKCS11", prov);
ks.load(null, "pass".toCharArray());
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", prov);
keyGen.initialize(2048);
KeyPair kp = keyGen.generateKeyPair(); // exception thrown here
Я пытался использовать AuthProvider
сразу после инициализации провайдера вот так:
AuthProvider aprov = (AuthProvider) prov;
aprov.login(null, callbacks -> {
log.error("@@@ Inside callbacks {}", callbacks.length);
});
aprov.setCallbackHandler(callbacks -> {
log.error("@@@ Inside setCallBackHandler {}", callbacks.length);
});
Но я не вижу никаких выходных данных журналирования, так что это означает, что лямбды не выполняются.
Конечная цель состоит в том, чтобы сгенерировать пару ключей RSA исохраните его в хранилище ключей (HSM) через PKCS11.
Я пробовал openjdk 8 и oracle jdk 8. Также при перечислении псевдонимов из хранилища ключей я получаю пустой список, но я знаю, что есть одна запись.Добавление -Djava.security.debug=sunpkcs11
ничего не изменило.