为了给文档添加时间戳,使用 itext,我们有 com.itextpdf.text.pdf.security.TSAClient 抽象接口。
但是如何从 PDF 文件中获取时间戳证书?
为了给文档添加时间戳,使用 itext,我们有 com.itextpdf.text.pdf.security.TSAClient 抽象接口。
但是如何从 PDF 文件中获取时间戳证书?
您也可以调用包含文档时间戳的签名字段的AcroFields
方法verifySignature
,并查询其结果以获取证书。
PdfReader reader = ...;
AcroFields fields = reader.getAcroFields();
List<String> names = fields.getSignatureNames();
String signatureName = names.get(names.size() - 1);
PdfPKCS7 pkcs7 = fields.verifySignature(signatureName);
System.out.println(String.format("Checking %ssignature %s", pkcs7.isTsp() ? "document-level timestamp " : "", signatureName));
Certificate[] chain = pkcs7.getSignCertificateChain();
此代码检查文档的最外层签名或文档时间戳,并返回已知的签名或时间戳的证书链。
您可能想查看LtvVerifier
类(我从中提取了上面的代码)以验证所有签名和文档时间戳,并阅读第 5.4.4 节在PDF 文档的数字签名中验证 LTV 文档以在上下文中使用。