3

简而言之 - 我想在 PDF 上添加多个签名(使用 iText),而不为每个签名添加新的修订。

我已经阅读了以下线程,这很有意义(因为布鲁诺写了答案)

很明显,如果文档有 2 个修订,第一个签名不会覆盖第二个修订。但是,是否有可能(根据 PDF 标准和 iText)对同一个修订版有两个签名?(我已将认证级别设置为CERTIFIED_FORM_FILLING_AND_ANNOTATIONS)。

关键是文档只创建一次,除了添加签名外,根本不会更改。而且由于签名的 PDF 将发送给非技术人员,因此看到“文档已更改”可能会引发一些“难以置信”(由于缺乏对 PDF 的了解,唉,我不能指望他们) . 所以,再说一遍 - 在 1 个修订版中可能有 2 个签名,由不同的人在不同时间添加。

4

1 回答 1

2

我在 iText 邮件列表上得到了一个有用的答案,我将分享。 在这里,一个绰号为 mkl 的人解释说,对于 Adob​​e 产品,这归结为一个先有后有的问题。

ISO 32000-1:2008,第 12.8.1 节说:“字节范围摘要应在文件中的字节范围内计算,应由签名字典中的 ByteRange 条目指示。该范围应为整个文件,包括签名字典但不包括签名值本身(内容条目)。可以使用其他范围,但由于它们不检查文档的所有更改,因此不建议使用它们。当存在字节范围摘要时,所有签名字典中的值应为直接对象。”

因此,根据该规范,允许更多分段字节范围。因此,特别允许从要签名的字节中排除多个签名容器。

但...

如果您希望 Adob​​e 产品开箱即用地接受您的签名,您会发现他们希望签名能够签署其修订版中的所有内容,但它本身除外。对于两个签名,这意味着每个签名都必须签署一个包含彼此的范围,这是一个先有后天的问题。

如果您的签名只需使用您自己的软件进行验证,并且 Adob​​e 产品可能会将您的签名标记为无效,那么您可以很容易地创建这种独立的双重签名。参照。

http://old.nabble.com/Uncommon-ByteRange-entry-in-signature-dictionary-to23670277.html

一些灵感。iText 可以更改为没有太多麻烦。但请记住伦纳德在那儿的话:

“Adobe Acrobat 和 Reader 将立即使超过 2 对的 ByteRange 无效。因此,任何具有多个范围的东西都不会验证。”

作为第三种方式,您可以构建一个自定义 Adob​​e 插件来验证您的自定义签名。


事后才想到...如果您真的想从事签名业务,您不仅应该记住当前的纯 PDF 标准(即 ISO-32000-1:2008),还应该记住其他标准。

例如,授予 ETSI TS 102 778-1;v1.1.1 中的第 4.1 节说:“与其他基于 CMS 的签名实现一样,摘要是在文件的字节范围内计算的。但是对于 PDF,由于签名信息将嵌入到文档本身中,因此该范围是整个文件,包括签名字典但不包括 PDF 签名本身。范围由签名字典的 ByteRange 条目指示。

通过以这种方式限制 ByteRange 条目,它可以确保 PDF 中除了 PDF 签名本身之外没有未被摘要覆盖的字节。

注意:第 2 部分和第 3 部分中定义的配置文件使此要求成为规范,这是 ISO 32000-1 [1] 第 12.8.1 条中的建议。”

因此,一旦您认真对待签名,签名的字节范围只需要涵盖所有修订版,但只有一个签名容器对这个字节范围进行签名。

(来自 iText 邮件列表,2009 年 12 月 1 日)

于 2009-12-03T18:45:36.823 回答