添加LTV(长期验证)会使字节范围无效

问题描述 投票:0回答:1

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

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

除了LTV(长期验证)之外,我还有其他工作要做,LTV需要DSS词典列出OCSP信息和链中的所有证书(以处理撤销)。

[添加签名数据后必须添加DSS时,我在Adobe Acrobat中收到一条错误消息,指出签名字节范围无效。

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

我已经对iText库进行了一些深入的研究,但是它是如此抽象,以至于很难确定要写入的实际数据。我仍然喜欢标记iText,因为它在处理PDF的数字签名方面是一种行业标准。

python pdf itext digital-signature asn1crypto
1个回答
0
投票

我想出了这一点,这要归功于这份精美的文档:Electronic Signatures and Infrastructures (ESI); PDF Advanced Electronic Signature Profiles; Part 4: PAdES Long Term - PAdES-LTV Profile标题可能是一个冗长的混乱,但文档实际上是非常简洁和有用的阅读内容。

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

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

[如果您有兴趣,我会在github上发布库:https://github.com/hejsan/WeasySign。它已经可以工作,但是需要一些修饰。

© www.soinside.com 2019 - 2024. All rights reserved.