Поскольку я читаю закрытый ключ из файла .pfx, чтобы подписать строку, где я должен использовать BouncyCastleProvider для провайдера безопасности.
Место выброса ошибки:
KeyStore.getInstance ("PKCS12", новый BouncyCastleProvider (). GetName ())
Фрагмент кода:
String message = jsonString;
String password = "XXXX";
Security.addProvider(new BouncyCastleProvider());
logger.severe("message : " + message);
File pfxFile = new file("/XXXX/XXXX/XXXX.pfx");
KeyStore keyStore = KeyStore.getInstance("PKCS12", new BouncyCastleProvider().getName()); //here getting error
logger.severe("keyStore : " + keyStore);
keyStore.load(new FileInputStream(pfxFile), password.toCharArray());
String alias = (String) keyStore.aliases().nextElement();
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, password.toCharArray());
Signature privateSignature = Signature.getInstance("SHA256withRSA");
privateSignature.initSign(privateKey);
privateSignature.update(message.getBytes("UTF-8"));
byte[] signature2 = privateSignature.sign();
String smsgContent = SHA256SignerUtil.encodeBase64String(signature2);
Фрагмент ошибки:
Caused by: java.lang.VerifyError: (class: org/bouncycastle/jce/provider/JDKPKCS12KeyStore, method: engineLoad, signature: (Ljava/io/InputStream;[C)V, offset: 1278) Incompatible object argument org/bouncycastle/asn1/DERSet for function call, expecting org/bouncycastle/asn1/DERConstructedSet