Apache PDFBox 3.0.6: внешнее подписание PDF-документа — ошибка изменения или изменения документа при проверке подписиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Apache PDFBox 3.0.6: внешнее подписание PDF-документа — ошибка изменения или изменения документа при проверке подписи

Сообщение Anonymous »

Я пытаюсь интегрировать внешнюю подпись в PDF-файл с помощью Apache PDFBox.
Я получаю подпись от внешней службы, которую я вызываю на основе строки SHA256 в кодировке Base64 из моего содержимого PDF-файла. В ответ я получаю подпись.
Это мой код:

Код: Выделить всё

import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.ExternalSigningSupport;
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature;
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureOptions;

public byte[] directSign(UUID docId, String base64Document) throws IOException {
byte[] documentData = documentContentService.decodeBase64(base64Document);

try (PDDocument document = Loader.loadPDF(documentData); ByteArrayOutputStream output = new ByteArrayOutputStream()) {
PDSignature signature = createSignatureTemplate();
SignatureOptions signatureOptions = createSignatureOptions();
document.addSignature(signature, signatureOptions);

ExternalSigningSupport externalSigning = document.saveIncrementalForExternalSigning(output);
byte[] contentToSign = externalSigning.getContent().readAllBytes();
String documentHash = getSHA256(contentToSign);

// calling the external signature service, and receiving a PKCS7 signature base64 encoded
Map hashesSigned = signDocumentHashes(new DocumentHashBatch(Map.of(docId.toString(), documentHash), ZonedDateTime.now()));

// The external service returns base64 encoded PKCS#7 signature
byte[] cmsSignatureBytes = Base64.getDecoder().decode(hashesSigned.get(docId.toString()));

// Set the CMS signature bytes directly
externalSigning.setSignature(cmsSignatureBytes);
output.flush();
return output.toByteArray();
}
}
Ошибка, которую я получаю в Acrobat Reader после подписания PDF
Буду очень признателен, если кто-нибудь сможет указать мне правильное направление. Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... or-altered
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»