我假设您指的是添加PADES-5标准中定义的"document security store"和"document-level timestamp"(RFC 3161) . 这在section 5.4 of my book中有解释 .
这是一个可以添加两者的方法的示例:
public void addLtv(
String src, String dest,
OcspClient ocsp, CrlClient crl, TSAClient tsa)
throws IOException, DocumentException, GeneralSecurityException {
PdfReader r = new PdfReader(src);
FileOutputStream fos = new FileOutputStream(dest);
PdfStamper stp = PdfStamper.createSignature(r, fos, '\0', null, true);
LtvVerification v = stp.getLtvVerification();
AcroFields fields = stp.getAcroFields();
List names = fields.getSignatureNames();
String sigName = names.get(names.size() - 1);
PdfPKCS7 pkcs7 = fields.verifySignature(sigName);
if (pkcs7.isTsp())
System.out.println("TIMESTAMP!");
for (String name : names) {
v.addVerification(name, ocsp, crl,
LtvVerification.CertificateOption.WHOLE_CHAIN,
LtvVerification.Level.OCSP_CRL,
LtvVerification.CertificateInclusion.NO);
}
PdfSignatureAppearance sap = stp.getSignatureAppearance();
LtvTimestamp.timestamp(sap, tsa, null);
}
请注意,如果添加的最后一个签名是文档级时间戳,则此方法会将"TIMESTAMP"写入 System.out .
Important: 在回答了这个问题之后,我看到了mkl的评论:之后添加撤销信息只能使用超出当前PDF标准I SO 32000-1的机制,例如: PAdES第4部分 . 我的答案显然假设您正在讨论使用PAdES标准应用的签名 . 也许这在我从"I assume"开头的第一句话中并不清楚 .