Я пытаюсь подписать PDF-документы с помощью библиотеки iText 5.5.5 .
У меня есть два сертификата для подписи документов, с одним сертификатом все работает отлично, и у вас есть действующий подписанный документ. Но проблема со вторым сертификатом, потому что вы можете подписать документ, но если я открою документ с помощью Adobe Reader, подпись недействительна.
Я использую один и тот же код для обоих сертификатов, но не знаю почему не работает с одним сертификатом. Вот код, который я использую для подписи документов с помощью iText 5.5.5
String pkcs11Config = "name=NAME" + "\n" + "library=PATH";
ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11Config.getBytes());
Provider pkcs11Provider = new sun.security.pkcs11.SunPKCS11(configStream);
Security.addProvider(pkcs11Provider);
KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, password);
PdfReader reader = new PdfReader(pdfInput);
FileOutputStream os = new FileOutputStream(pdfOutputTemp);
PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0', null, true);
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
...
PrivateKey key = (PrivateKey) ks.getKey(alias, pass);
ExternalSignature es = new PrivateKeySignature(key, DigestAlgorithms.SHA256, null);
ExternalDigest digest = new BouncyCastleDigest();
MakeSignature.signDetached(appearance, digest, es, chain, crlList, null, tsc, 0, CryptoStandard.CADES);
Я также прилагаю два подписанных документа, один подписан сертификатом, у которого нет проблем, а другой с сертификатом, который делает подпись недействительной.
Недействительный документ
Действительный документ
Я признателен за помощь, которую вы можете мне оказать .Спасибо