我正在使用 PDFBox 2.0 我想创建一个具有 PADES-LTV 格式的 PDF,但不是我这样做的步骤。我的问题是关于 LTV 参数以及何时应用。
需要知道在什么时候添加以及如何添加
如果你能指导我,我会放我的部分代码。但我正在使用签署它的例子 PDFBox
提前致谢
public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient)
throws IOException
{
setTsaClient(tsaClient);
// create signature dictionary
PDSignature signature = new PDSignature();
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
signature.setName("test PADES-LTV");
signature.setLocation("Madrid, ES");
signature.setReason("Testing");
// TODO extract the above details from the signing certificate? Reason as a parameter?
// the signing date, needed for valid signature
signature.setSignDate(Calendar.getInstance());
// register signature dictionary and sign interface
document.addSignature(signature, this);
// write incremental (only for signing purpose)
document.saveIncremental(output);
}
我删除了第一个链接,因为它是在书店付款时。
我有这些信息,但不知道如何应用它 PDFBox
根据 ETSI TS 102 778-4 V1.1.2 (2009-12),应用 LTV 的 PDF 文档的结构如图 2 所示。
图 2:具有 LTV 的 PDF 文档插图
通过添加进一步的 DSS 信息来验证先前的最后一个文档时间戳以及新的文档时间戳,可以进一步延长保护的生命周期超过应用的最后一个文档时间戳的生命周期。这如图 3 所示。
图 3:具有重复 LTV 的 PDF 文档说明
另一方面,根据 Adobe(2013 年 1 月他们的 PDF 传播者 Leonard Rosenthol 在 iText 邮件列表中所写)的说法,
启用 LTV 意味着验证文件所需的所有信息(减去根证书)都包含在其中。所以你的这个说法是真的。
PDF 已正确签名并包含所有必要的证书、每个证书的有效 CRL 或 OSCP 响应但由于该声明正确的唯一方法是存在 DSS,因此您必须具有启用 LTV 的 DSS。不需要时间戳(常规或文档级别)。由于这种差异,根据 ETSI 具有 LTV 的 PDF 文档通常由 Adobe 软件呈现为具有一个不支持 LTV 的文档时间戳。
参考(对于 itext):如何为时间戳签名启用 LTV?