Java 使用adbe.x509.rsa_sha1时,PDFBox在签名字典中指定证书

Java 使用adbe.x509.rsa_sha1时,PDFBox在签名字典中指定证书,java,pdf,pdfbox,Java,Pdf,Pdfbox,在pdfbox中将adbe.x509.rsa_sha1用作子过滤器时,规范(32000-1:2008,第468页)要求设置“Cert”签名字典字段。PDSignature或COSDictionary中没有设置此“Cert”字段的方法,该字段应包含“表示x.509证书链(…)的字节字符串数组” 是否有办法指定此“证书”字段?或者现在不可能吗?正如@TimanHausherr提到的,现在不可能直接在PDFBox(2.0.4)中设置证书值。仍然可以使用以下方法手动包含“证书”条目: 字节[]证书=。。

在pdfbox中将adbe.x509.rsa_sha1用作子过滤器时,规范(32000-1:2008,第468页)要求设置“Cert”签名字典字段。PDSignature或COSDictionary中没有设置此“Cert”字段的方法,该字段应包含“表示x.509证书链(…)的字节字符串数组”


是否有办法指定此“证书”字段?或者现在不可能吗?

正如@TimanHausherr提到的,现在不可能直接在PDFBox(2.0.4)中设置证书值。仍然可以使用以下方法手动包含“证书”条目:

字节[]证书=。。。; PDSignature signature=新的PDSignature(); COSTRING CERTCOSTRING=新的COSTRING(cert); signature.getCOSObject().setItem(“Cert”,certCosString);
现在,当PDFBox使用“签名”对文档进行签名时,cert字段将包括在内。

这必须在外部完成。顺便说一句,您使用的签名方法有些过时。使用源代码下载中Create*Signature.java示例中显示的方法。@tilmahausherr不幸的是,我现在不得不使用这个方法。我将以其他方式设置“Cert”字段。PDSignature仍然具有子过滤器\u ADBE\u X509\u RSA\u SHA1选项,将来可能会删除此选项?顺便说一句,您可以使用signature.getCOSObject(COSName.getPDFName(“Cert”)项设置任何内容)@Bas Tilman的评论对你有帮助吗?是的@mkl,TilmanHausherr确实帮助了我,见下面的答案。