1

我对XML签名的引用和转换感到很困惑

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

在签署封装签名时,在取消引用之后,应该先应用 C14N 还是封装变换?(虽然看起来没什么区别)

谢谢

4

1 回答 1

1

对于同文档引用,合法的 URI 也由XPointer 框架定义,因此可能存在您提到的典型 URI 之外的其他 URI。

“包络”变换是一种变换,它的输入是一个节点集,它也产生一个节点集。输入节点集是通过取消引用 URI 属性隐式给出的,结果将是另一个节点集,其中包含转换的签名元素被删除。

为了能够计算计算签名值所需的消息摘要,必须首先将节点集转换为“八位字节流”。这就是 C14N 所做的。您可以应用明确声明的 C14N 转换,或者,如果未指定,则应用隐式 C14N 1.0 转换(请参阅XML 签名语法和处理版本 1.1):

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

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

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

于 2012-06-16T00:27:02.147 回答