我已经检查过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来解决相同的问题。 但是如果涉及多个引用,它可能会变得更复杂。
答案 0 :(得分:3)
在一组节点上进行多个签名并使用当前的XMLDSig标准将它们包含在同一XML文档中没有问题。不需要特殊的规则或标准。
使用您的示例,每个签名(应该)不是“root”,而是“item”节点(或项目节点集)。因此签名B不包括签名A作为要签名的数据。