微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML多重签名是否有标准?

我检查了W3C网站上的 XML签名语法和处理,
但它没有多关于多重签名的说法.
是否有标准或规则在单个xml文件上创建多重签名
谢谢

示例:(考虑仅相同文件引用)

原始的xml

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
</root>

首先A用带有标志的签名签名

签名XML

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
  <Signature>this is Signature signed by A with Ref URL=""</Signature>
</root>

现在,B想要签署XML(包含A的签名)

B签名XML

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
  <Signature>Signature A: this is Signature signed by A with Ref URL=""</Signature>
  <Signature>Signature B: this is Signature signed by B with Ref URL=""</Signature>
</root>

然后,当涉及到验证时,它变得令人困惑……

签名A,在验证时,它看到了

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
  <Signature>Signature B: this is Signature signed by B with Ref URL=""</Signature>
</root>

但它实际签署的是什么

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
</root>

(请注意,由于包含变换,在签名和验证时会删除一个签名节点)
在进行包络签名时,可以通过将签名节点视为root来解决相同的问题.
但如果涉及多个参考,它可能会变得更加复杂.

解决方法

在一组节点上进行多个签名并使用当前的XMLDSig标准将它们包含在同一XML文档中没有问题.不需要特殊规则或标准.

对于您的示例,每个签名(应该)不是“root”,而是“item”节点(或项目节点集).因此,签名B不包括签名A作为要签名的数据.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。