【问题标题】:Signing PDF - multiple signatures with a single revision签署 PDF - 一个修订版的多个签名
【发布时间】:2009-11-27 08:33:23
【问题描述】:

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

我读过following thread,这很有意义(因为布鲁诺写了答案)

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

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

【问题讨论】:

  • 在我看来,从您链接的线程来看,Bruno 建议您需要同时添加两个签名,并且需要修改 iText 以支持该功能,因此您可以这样做。我看不出你有什么问题......
  • 我不想同时添加它们;)它们将由不同的人在几小时到几天内添加。
  • 嗯,好的。我认为如果你的最后一句话这么说会更清楚。

标签: java pdf itext


【解决方案1】:

我在 iText 邮件列表上得到了一个有用的答案,我将与大家分享。 Here,昵称 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 日)

【讨论】:

  • 不幸的是,该链接不再有效。 this one 与您所指的线程相同吗?
猜你喜欢
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 2019-10-10
相关资源
最近更新 更多