【发布时间】:2016-09-26 19:49:32
【问题描述】:
我正在尝试“完成到 ltv”一个已经签名的 pdf,我使用 itext 找到了这段代码:
http://developers.itextpdf.com/question/how-enable-ltv-timestamp-signature
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<String> names = fields.getSignatureNames();
String sigName = names.get(names.size() - 1);
PdfPKCS7 pkcs7 = fields.verifySignature(sigName);
if (pkcs7.isTsp()) {
v.addVerification(sigName, ocsp, crl,
LtvVerification.CertificateOption.SIGNING_CERTIFICATE,
LtvVerification.Level.OCSP_CRL,
LtvVerification.CertificateInclusion.NO);
}
else {
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);
}
我读到它与 Adobe 存在“问题”,因为应用的时间戳未被识别为启用 LTV,并建议应用新的 dss 来解决此问题。
我的问题:
-
可以在应用时间戳之前添加此信息吗?如果我要添加一个 dss 来完成,我也可以添加 TSA 时间戳信息(ocsp、crl ...)(可能使用假符号来获取信息),然后应用时间戳而无需再次使用新的 dss。
如果是……这是否得到 ETSI 的批准? iText 可以处理吗?我注意到 addVerification 从已包含的签名中添加信息,但似乎我无法使用此方法添加所需的信息。还有另一种方法可以添加“免费”验证或 addVerification 让我来,我没注意到?
如果没有...为什么?那为什么我不需要再次为添加的新 dss 打时间戳?
如您所见...我不是专家,我需要一些帮助。
非常感谢您的帮助!
【问题讨论】: