こんにちは、みんな!私の問題は次のとおりです。X509 証明書を PKCS7 に暗号化しようとしていますが、間違った結果が返されます。
最初の試行は次のとおりです:(使用されたbcmail-jdk16:1.46)
Security.addProvider(new BouncyCastleProvider());
keystore = KeyStore.getInstance("PKCS12", "BC");
keystore.load (new FileInputStream(PATH+"//pkcs7-csr-cer//identity.p12"), "testpassword".toCharArray());
PrivateKey privateKey = (PrivateKey)keystore.getKey("testclientcert", "testpassword".toCharArray());
CMSSignedDataGenerator signedDataGen = new CMSSignedDataGenerator();
signedDataGen.addSigner(privateKey, certificate, CMSSignedDataGenerator.ENCRYPTION_RSA, CMSSignedDataGenerator.DIGEST_SHA256);
CMSProcessableFile pkcs7 = new CMSProcessableFile(new File(destinationfile));
CMSSignedData signedData = signedDataGen.generate(pkcs7, true, "BC");
signedData = new CMSSignedData(pkcs7, signedData.getEncoded());
...そして、うまくいきません。
2 回目の試行は次のとおりです (bcmail-jdk16-140 を使用):
Security.addProvider(new BouncyCastleProvider());
CMSEnvelopedDataGenerator envDataGen = new CMSEnvelopedDataGenerator();
envDataGen.addKeyTransRecipient(certificate);
CMSProcessable sData = new CMSProcessableByteArray(certificate.getEncoded());
CMSEnvelopedData enveloped = envDataGen.generate(sData, CMSEnvelopedDataGenerator.AES256_CBC, "BC");
return enveloped.getEncoded();
どちらの場合も間違った結果が得られます。それを行う正しい方法を知っている人を助けてください。ありがとう!