Как зашифровать 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? Спасибо!

0 ответов

Другие вопросы по тегам