如何将VRI dictonary添加到PDF中

时间:2016-10-24 11:26:19

标签: pdf pdfbox signature dss

有! 我正在使用pdfbox 1.8.11来做pdf签名,我可以创建一个支持LTV的签名,其中嵌入了DSS字典。现在问题是当有多个签名时进行证书验证。

根据PDF 2.0 LTV和PAdES LTV规范,允许为每个签名添加VRI,以便可以验证每个特定签名的相关撤销数据。

知道如何为签名添加VRI字典吗?由于VRI的关键是基本16编码的哈希,这意味着我需要先签名。据我所知(我希望我错了),当具有签名相关信息的PDF保存到输出流中时,将创建签名。 (PDDocument.saveIncremental(ins, outs)

=============================================== =============

更详细:

当我想根据PAdES LTV和PDF 2.0 LTV规范验证针对DSS数据的签名时,我遇到了这个问题。首先关注的是PDF 2.0 LTV规范。

如果我理解正确:

  1. DSS包含我们在签名PDF中的所有签名的吊销数据。
  2. 我遇到的情况: 假设:用户A和用户B有两个用户,他们的证书由相同的CA颁发。 (我认为这很常见。)

    1. 用户A使用DSS签署文档(certs / crls / ocps已嵌入)。
    2. 几天后,用户B使用DSS(certs / crls / ocps)签署用户签名文档。 注意!:crls由颁发者标识符标识。
    3. 签名验证阶段:

      当我想重建证书链时,请根据crls和ocsps验证签名证书,特别是当我想检查文件签名时crl未过期时,我需要确保我是使用正确版本的crl。

      对我而言,这意味着我应该检查与签名正确映射的certs / crls / ocsps。否则,验证将再次可靠,同样毫无意义。

      因此,即使最新的PAdES规范103不建议使用VRI。说真的,我认为这不对....

      然后是另一个问题:

      正如我评论的那样,我正在使用pdfbox签署pdf。

      1. 如果我事先收集DSS数据,请在之后创建签名。 (事实上​​,DSS也是签名内容的一部分。)

        • 好事:acrobat reader识别我的签名是LTV启用。
        • 坏事:在这种情况下,我无法在那里添加VRI。 VRI的关键是签名的散列值。
      2. 如果我先签署文件,之后获得签名和DSS与VRI,acrobat reader不再识别DSS。我的签名不再是针对acrobat阅读器的LTV。 这是我很困惑的问题。 LTV验证中的acrobat阅读器是错误的还是??

      3. 我认为这是错的吗?如果我理解错了,请指出。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

首先,我看过的最新PDF 2.0草案已有两年了。因此,我的答案最好是基于ETSI标准,而不是基于该草案。 ;)

  

如果我理解正确:

     
      
  1. DSS包含我们在签名PDF中的所有签名的吊销数据。
  2.   

不一定是所有签名。如果验证者仅对单个签名的有效性感兴趣(如果文档中的签名具有不同的语义,则可能是场景),但它应该添加获取的验证相关信息。

  

当我想重建证书链时,请根据crls和ocsps验证签名证书,特别是当我想检查文档签名时crl是否过期时,我需要确保我&#39 ; m使用正确版本的crl。

     

对我而言,这意味着我应该检查与签名正确映射的certs / crls / ocsps。否则,验证将再次可靠,同样毫无意义。

你的目标究竟是什么?您是否尝试重新制定特定的前验证法案?或者您只是想验证签名?

在前一种情况下,您确实需要一些映射"为了验证此签名,使用了以下验证关系信息"由例如 VRI 结构。

但通常,后者是您的任务,在这种情况下,您可以使用您找到的任何验证相关信息,只要它适用。因此,在同一CA颁发的签名者证书的样本情况下,只要CRL有效性间隔对签名的验证时间都可以,就可以使用相同的CRL,并且可以正确验证CRL本身的签名。 / p>

因此,

  

因此,即使最新的PAdES规范103不建议使用VRI。说真的,我认为这不对....

LTV上的PAdES规范只是想保证可以验证签名,而不是像以前那样完全验证它们。考虑到这一任务,这是正确的。

  

如果我事先收集DSS数据,请在之后创建签名。 (事实上​​,DSS也是签名内容的一部分。)

     

好事:acrobat reader识别我的签名是LTV启用。

     

坏事:在这种情况下,我无法在那里添加VRI。 VRI的关键是签名的散列值。

你不仅没有能力,实际上你不被允许!正如ETSI EN 319 142-1 V1.1.1所说:

  

任何 VRI 词典都应位于文档增量更新部分。如果签名词典给哪一个    VRI 字典适用于增量更新部分(参见ISO 32000-1 [1]第7.5.6节), VRI 更新   应在签名更新之后完成。

     

如果我先签署文件,之后获得签名和DSS与VRI,acrobat reader不再识别DSS。我的签名不再是针对acrobat阅读器的LTV。这是我困惑的问题。 LTV验证中的acrobat阅读器是错误的还是??

这是显示此行为的示例文件有用的地方