java - 如何使用 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);
}
在此之后我该如何继续?
解决方案
推荐阅读
- keras - 输入共享 dropout 层
- c++ - 如何在c ++中对双向链表进行排序而不交换数据,只传输(条目)节点
- javascript - CKEditor 5 React 自定义图片上传
- java - 有人可以向我解释这种 3-way-quicksort 的实现吗
- julia - 为什么 inv() 失败?
- c# - 如何处理使 UI 无响应的同步(阻塞)调用
- r - 使用 R 中分类数据的圆形移动窗口计算多数
- python - Marshmallow Parent Schema - 如何在子模式之间共享验证装饰器?
- python - 类视图和 NoReverseMatch
- regex - 组合前瞻不匹配