首页 > 解决方案 > 如何使用 XML 数字签名签署 pdf 文档?

问题描述

我正在准备 pdf 文档的 MessageDigest(SHA256) 并将其发送到签名网络服务。该服务返回给我一个 XMLSignature。为了签署我的 pdf,我试图将这个 XML 签名附加到它上面。我怎样才能在java中做到这一点?

当我谷歌时,我能够找到许多与用于签署 XML 内容的 XMLSignature 相关的参考资料,但是我找不到如何使用 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);

        }

在此之后我该如何继续?

标签: javaitextdigital-signaturexml-signature

解决方案


推荐阅读