Как я могу подписать документ PDF с цифровой подписью XML? - PullRequest
0 голосов
/ 22 апреля 2019

Я готовлю 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);

        }

Как я могу продолжить после этого?

...