我正在尝试使用通过使用 AWS KMS 签署我的 PdfDocument 的 SHA256 摘要获得的签名在 PDF 本身上应用签名。我什至不确定我是否朝着正确的方向前进。
一切运行正常,但生成的文件的签名会引发错误:
Error during signature verification. ASN.1 parsing error: Error encountered while BER decoding:
Run Code Online (Sandbox Code Playgroud)
如果这很重要,我可以从 AWS 检索公钥,但私钥保留在他们身边。我在网上看到的大多数文档都假定您可以访问私钥。此外,由于 AWS 处理签名,我不确定如何或从何处获取证书链。我发现的所有文档也需要该证书链。
首先,我创建了一个空的签名字段,因为大多数文档都指示您这样做。我认为可能存在问题,PdfName.Adbe_pkcs7_detached但如果这是错误的,我不知道还有什么可以代替它。
public void addEmptySignatureField(File src, File destination, String fieldName) throws IOException, GeneralSecurityException {
try (
var reader = new PdfReader(src);
var output = new FileOutputStream(destination)
) {
var signer = new PdfSigner(reader, output, new StampingProperties());
signer.getSignatureAppearance()
.setPageRect(new Rectangle(36, 748, 200, 100))
.setPageNumber(1)
.setLocation("whee")
.setSignatureCreator("Mario")
.setReason("because")
.setLayer2FontSize(14f);
signer.setFieldName(fieldName);
IExternalSignatureContainer blankSignatureContainer …Run Code Online (Sandbox Code Playgroud)