为了使用itext添加docuemnt时间戳,我们有com.itextpdf.text.pdf.security.TSAClient抽象接口。
但如何从PDF文件中获取TimeStamp证书?
答案 0 :(得分:0)
您也可以为包含文档时间戳的签名字段调用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节验证LTV文档在Digital Signatures for PDF documents中用于上下文。