Я пытаюсь сделать подпись файла в формате CAdES-BES - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь сделать подпись файла в формате CAdES-BES, используя библиотеку надувных замков. Вначале подпись генерируется правильно, проблема в том, что лицо, ответственное за проверку этой подписи, отклоняет ее, и я оставляю здесь свой код на случай, если кто-то увидит, что я что-то упустил или сориентирует меня.

        public byte[] sign(String plainText, PrivateKey privateKey, String pathX509Certificate) throws SignatureException, CertificateException, FileNotFoundException {
            Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
            CMSSignedDataGenerator cmsSignedDataGenerator = new CMSSignedDataGenerator();

            InputStream in = new FileInputStream(pathX509Certificate);
            CertificateFactory factory = CertificateFactory.getInstance("X.509");
            X509Certificate cert = (X509Certificate) factory.generateCertificate(in);

            try {
                ContentSigner contentSigner = new JcaContentSignerBuilder("SHA512withRSA").build(privateKey);
                cmsSignedDataGenerator.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(
                        new JcaDigestCalculatorProviderBuilder().setProvider(BouncyCastleProvider.PROVIDER_NAME).build())
                        .build(contentSigner, privateKey.getEncoded()));
                cmsSignedDataGenerator.addCertificate(new X509CertificateHolder(cert.getEncoded()));
                FileInputStream fileInputStream = new FileInputStream(new File(plainText.toUpperCase().replace(".XML","")));
                CMSTypedData cmsTypedData = new CMSProcessableByteArray(IOUtils.toByteArray(fileInputStream));
                CMSSignedData cmsSignedData = cmsSignedDataGenerator.generate(cmsTypedData, true);

                in.close();
                fileInputStream.close();
                return cmsSignedData.getEncoded();
            } catch (Exception e) {
                throw new SignatureException(e);
            }

        }

Привет.

...