Я готовлю MessageDigest (SHA256) к PDF-документу и отправляю его подписывающему веб-сервису. Этот сервис возвращает мне XMLSignature. Чтобы подписать мой PDF, я пытаюсь прикрепить к нему эту XML-подпись. Как я могу сделать это в Java?
Когда я в Google, я могу найти много ссылок, касающихся XMLSignature, используемой для подписи содержимого XML, однако я не могу найти, как XMLSignature можно использовать для подписи документа PDF?
Я знаю, как прикрепить сертификаты в pdf с закрытым ключом, но не могу понять, как использовать подпись XML.
Я могу получить подпись XML, как показано ниже.
InputStream certificateIS = new ByteArrayInputStream(decoder.decode({base64_encoded_certificate}));
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(certificateIS);
PublicKey pk = certificate.getPublicKey();
//getSignatureElement returns the <Signature> element of the XML returned from the web service
Element signatureElement = getSignatureElement();
if(null!=signatureElement) {
DOMValidateContext context = new DOMValidateContext(pk, signatureElement);
XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
XMLSignature signature = factory.unmarshalXMLSignature(context);
}
Как я могу продолжить после этого?