我对iText中的LTV感到困惑.我已经阅读了论文,讨论但有一点仍然不清楚.LTV和文档时间戳之间有什么联系?或者更准确地说,如何在不使用时间戳的情况下启用pdf LTV?有一点我肯定知道,要创建一个支持LTV的文档,我不需要时间戳.我尝试在acrobat中使用数字证书签署文档,打开时说文档已启用LTV,我没有使用任何时间戳.
我正在使用iText 5.5.3签署PDF文档.我需要将这些文档加上时间戳并启用LTV.我按照说明操作并使用了addLtv方法(代码示例5.9,Lowagie白皮书中的第137页).我得到一个带有2个签名的PDF,这是正常的:第一个是我自己的签名,第二个是文档级时间戳.
但是,Acrobat告诉我我的签名是启用了LTV,但时间戳签名不是:
来自Acrobat Pro XI的图片http://img15.hostingpics.net/pics/727285so2.jpg
这是因为时间戳证书的吊销信息未嵌入到文档中:
缺少撤销信息1 http://img15.hostingpics.net/pics/491507so2a.jpg
缺少撤销信息2 http://img15.hostingpics.net/pics/312720so2b.jpg
根据我的理解,addLtv方法应该获取所需的所有吊销信息并将其嵌入到文档中.这是正确的,还是我必须"手动"获取并嵌入这些信息?
我正在尝试在没有 LTV 格式的已签名 PDF 文档中启用 LTV。我在所有情况下都找到了相同的示例,如链接如何为时间戳签名启用 LTV,启用 iText LTV - 如何添加更多 CRL? , 其中, 定义了获得预期结果的过程。碰巧我没有工作,它没有给我任何错误,但我没有添加 LTV。
为什么在执行以下代码时没有给我任何错误的一些想法,但我没有添加 LTV。
这是我尝试添加 LTV 的方法:
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 = …Run Code Online (Sandbox Code Playgroud)