@HerbertPimentel: вы не говорите, какой метод вы использовали, но если он есть в коде (мой 2-й или 3-й пункт), он должен работать до тех пор, пока доступен jar BCprov, который зависит от того, где вы поместили jar и как вы установили путь к классам И, конечно, до тех пор, пока вы используете правильные файлы классов; сложные IDE могут иногда работать не так, как вы думаете.
ка прочитать закрытый ключ PKCS8 в формате PEM с помощью следующего:
private static PrivateKey loadPrivateKey()
throws IOException, GeneralSecurityException, OperatorCreationException, PKCSException {
FileReader fileReader = new FileReader(certsRoot + "/pep-client-key.pem");
PEMParser keyReader = new PEMParser(fileReader);
JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
InputDecryptorProvider decryptionProv = new JceOpenSSLPKCS8DecryptorProviderBuilder().build("mypassword".toCharArray());
Object keyPair = keyReader.readObject();
PrivateKeyInfo keyInfo;
if (keyPair instanceof PKCS8EncryptedPrivateKeyInfo) {
keyInfo = ((PKCS8EncryptedPrivateKeyInfo) keyPair).decryptPrivateKeyInfo(decryptionProv); // Exception thrown from here
keyReader.close();
return converter.getPrivateKey(keyInfo);
}
return null;
}
генерирует эту ошибку:
org.bouncycastle.pkcs.PKCSException: unable to read encrypted data: 1.2.840.113549.1.5.13 not available: Cannot find any provider supporting 1.2.840.113549.3.7
at org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo.decryptPrivateKeyInfo(Unknown Source)
Я проверил с OpenSSL, что файл может быть обработан как PKCS8 PEM с предоставленным паролем.
Любая идея? Я не против, если есть решение, не связанное с библиотеками BouncyCastle.