0

我正在编写一个小型库,旨在成为一个高级(如易于使用)库,用于对使用 Wea​​syPrint 库(https://github.com/Kozea/WeasyPrint)生成的 pdf 进行数字签名。

我已经让它适用于自签名证书,现在我正在研究来自 Globalsign DSS API 的数字签名适配器(https://www.globalsign.com/en/resources/apis/api-documentation/digital -signing-service-api-documentation.html )

除了需要列出 OCSP 信息和链中任何证书的 DSS 字典(处理撤销)之外,我已经完成了除 LTV(长期验证)之外的所有工作。

当我添加必须在写入签名数据之后进行的 DSS 时,我在 Adob​​e Acrobat 中收到一个错误,指出签名字节范围无效。

如何在不使字节范围无效的情况下启用 DSS 功能?

我已经深入研究了 iText 库,但它非常抽象,很难弄清楚正在写入的实际数据。我仍然冒昧地标记 iText,因为它在某种程度上是处理 PDF 中的数字签名的行业标准。

4

1 回答 1

0

多亏了这个命名精美的文档: 电子签名和基础设施(ESI);PDF 高级电子签名配置文件;第 4 部分:PAdES 长期 - PAdES-LTV 简介 标题可能是冗长的混乱,但文档实际上是非常简洁和有用的阅读。

可以在原始字节范围之后添加 DSS,方法是在文件末尾添加一个时间戳,该时间戳采用包含整个文件(包括 DSS)的另一个字节范围的摘要。您必须启用扩展才能使其工作,请参阅“第 4.4 章扩展字典”。链接文档中有更详细的细节。

我认为值得一提的是,我通过使用 Apache PDFBox 实用程序发现了我的 PDF 中的一些语法错误。我希望我能早点找到它。

如果您有兴趣,我在 github 上发布了该库:https ://github.com/hejsan/WeasySign 。它已经有效,但需要一些修饰。

于 2020-04-10T00:43:45.367 回答