|
XML 数字签名使用 Reference 来具体指定签名的内容,包括摘要算法,摘要值,一个URI 属性,一个Type属性,以及上面提到的一组 Transform,其结构见代码清单 1。关于 Reference 就不做具体介绍了。
URI(Universal Resource Identifier)统一资源标志符
XML 数字签名就是使用 URI 指向被签署的对象。URI 的特点如下:
Web 上任何资源 (HTML 文档、图像、视频、程序等 ) 都可以 URI 进行定位。 URI 还支持相对路径,用来指向同一台机器上的其他资源。 URI 还可以指向资源的内部,其中这种 URI 由“#”结束,后面跟一个标志符。 URI 的这些特性,给 XML 数字签名签署外部文件带来了先天的优势。下面将给出一些例子具体介绍 XML 数字签名如何使用 URI 签署各种资源。
例子
URI="http://example.com/foobar.xml" 这个 URI 指向的是 Web 上 http://example.com/foobar.xml 的资源文件,根据它的文件扩展名,它可能是一个 XML 文档。
URI="http://example.com/foobar.xml#chapter1" 这个URI指向的是Web上http://example.com/foobar.xml的资源文件中ID属性为“chapter1”的结点。但我们更倾向使用XPath Filter Transform来获得资源内部结点。
URI="" 这个 URI 指向的是当前包含这个 XML 数字签名的 XML 文档 ( 其中,除去注释结点 )。
URI="#chapter1" 这个 URI 指向的是当前包含这个 XML 数字签名的 XML 文档的 ID 为“chapter1”的结点。
总结如下:
由于 XML 数字签名中可以拥有多个 Reference 结点,所以,XML 数字签名可以签署多个资源文件。
这篇文章中所提到的 XML 文档的“结点”指的是包含此结点,和它的子孙结点,命名空间和属性的“树”,此时,读者可以把 XML 文档理解为一个树型结构。
|