Как зашифровать CSR в PKCS7 с помощью Bouncycastle?
Привет, ребята! Моя проблема заключается в следующем: у меня есть сертификат CSR, сертификат клиента X509 и файл.p12 с закрытым ключом CSR. Я хочу зашифровать свой CSR в PKCS7 и в будущем получить его и проверить.
В следующем коде я пытаюсь прочитать мой CSR и поместить его в контейнер PKCS7:
//get client X509 certificate
FileInputStream fis = new FileInputStream(PATH+"//pkcs7-csr-cer//identity.cer");
X509Certificate certificate = (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(fis);
fis.close();
//read my csr file and create pkcs10 based on it
FileReader fileReader = new FileReader(csrfilename);
PemReader pemReader = new PemReader(fileReader);
PKCS10CertificationRequest pkcs10 = new PKCS10CertificationRequest(pemReader.readPemObject().getContent());
//trying to encrypt the pkcs10 in pkcs7
CMSEnvelopedDataGenerator generator = new CMSEnvelopedDataGenerator();
generator.addKeyTransRecipient(certificate);
CMSProcessable sdata = new CMSProcessableByteArray(pkcs10.getEncoded());
CMSEnvelopedData envelopedData = generator.generate(sdata, CMSEnvelopedDataGenerator.AES256_CBC, "BC");
bytes[] pkcs10Encrypted = envelopedData.getEncoded();
//trying to get from encrypted csr
CMSEnvelopedDataParser envDataParser = new CMSEnvelopedDataParser(enveloped);
RecipientInformationStore recipients = envDataParser.getRecipientInfos();
Collection envCollection = recipients.getRecipients();
Iterator it = envCollection.iterator();
RecipientInformation recipient = (RecipientInformation) it.next();
byte[] result = recipient.getContent(privateKey, "BC");
String base64Encoded = new String(Base64.encode(result));
И я получаю исключение:
Exception in thread "main" org.bouncycastle.cms.CMSException: bad padding in message.
at org.bouncycastle.cms.KeyTransRecipientInformation.getSessionKey(Unknown Source)
at org.bouncycastle.cms.KeyTransRecipientInformation.getContentStream(Unknown Source)
at org.bouncycastle.cms.RecipientInformation.getContent(Unknown Source)
Я гуглил и обнаружил ту же проблему, но решение было неверным закрытым ключом, но мое верно. Помогите, пожалуйста. Может кто знает некоторые уроки Bouncy Castle? Спасибо!