关于XML签名转换的法律引用和顺序

时间:2012-06-13 14:29:46

标签: xml digital-signature xml-signature

我对XML签名的引用和转换非常困惑

在进行同一文档引用时,是否有任何合法的URI期望“”和“#objectid”?

签署封装签名时,在解除引用后,是应首先应用C14N还是应用包络变换? (虽然看起来没什么区别)

谢谢

1 个答案:

答案 0 :(得分:1)

对于同一文档引用,合法URI也由XPointer framework定义,因此可能存在其他URI而不是您提到的典型URI。

“Enveloped”变换是一种变换,其输入是节点集,并且还生成节点集。输入节点集通过解除引用URI属性隐式给出,结果将是另一个节点集,其中包含转换的签名元素被删除。

为了能够计算计算签名值所需的消息摘要,必须首先将节点集转换为“八位字节流”。这就是C14N的作用。您可以应用明确声明的C14N变换,或者,如果没有指定,则应用隐式C14N 1.0变换(请参阅XML Signature Syntax and Processing Version 1.1):

  

如果URI解引用和Transforms的应用结果是XPath节点集(或应用程序实现的功能替换),则必须按照4.4.3.2参考处理模型中的描述进行转换。

  

如果数据对象是节点集并且下一个转换需要八位字节,则签名应用程序必须尝试使用​​Canonical XML [XML-C14N]将节点集转换为八位字节流。

以与文档中出现的顺序相同的顺序应用变换也很重要,如果以任意顺序应用它们,可能会产生错误的结果。