WEB开发网
开发学院软件开发Java 使用 Java 验证 Lotus Forms XML 数字签名 阅读

使用 Java 验证 Lotus Forms XML 数字签名

 2010-01-15 00:00:00 来源:WEB开发网   
核心提示: XML 签名包含一个表示签名内容的 Reference 元素,Reference 不具有 URI 属性,使用 Java 验证 Lotus Forms XML 数字签名(2),在 XFDL 文档中这表示整个文档都应当被签名隐藏,Reference 然后包含一个 Transform,将针对验证创建一

XML 签名包含一个表示签名内容的 Reference 元素。Reference 不具有 URI 属性,在 XFDL 文档中这表示整个文档都应当被签名隐藏。Reference 然后包含一个 Transform,可以去掉生成的 XML 签名。这一步是必需的,因为 XML 签名被封装在已签名的 XFDL 文档的内部。当所引用的资源(XFDL 文档)的数字指纹被计算后,Reference 的 DigestValue 元素将为空。计算结果随后被存储到 DigestValue 中,这将修改 XFDL 文档。然而,实际上没有发生修改(从 XML 文档中去除 XML 签名),这就是我们从对其计算摘要的内容中去掉已封装签名的原因。

在清单 1 中,SignedInfo 中还有一个 Reference。XML 签名可以对创建者所需要的任意数量的资源进行签名。在本例中,我们使用它对生成的 XML 签名的额外元数据进行签名。例如,这一特性可用于在生成的 XML 签名中包含一个简单的 XAdES 时间戳。


图 1. 样例签名表单
使用 Java 验证 Lotus Forms XML 数字签名

验证签名表单

查看应用程序(比如 IBM Lotus Forms Viewer)或程序可以使用一个私有密匙对表单进行签名。下载 小节提供了一个未进行签名的样例表单。建议用户下载 Lotus Forms Viewer 来对表单进行签名并理解其工作原理。IBM Lotus Forms Server 还使用户能够对表单进行数字签名,不需要下载和安装 Lotus Forms Viewer。

除 Lotus Forms API 以外,还可以使用标准的 Java XML Digital Signature API(在 JSR 105 中定义)对签名表单进行交叉验证,这个 API 也作为 Java 6 的一部分包含在其中。

要断言某个表单没有被篡改,必须对表单中的所有签名进行验证。这种验证可以通过查找所有包含 Signature 元素和非空 SignatureValue 元素的 XForms 实例来完成。对于此类 XForms 实例中的每一个,将针对验证创建一个单独的、具有合适名称空间的实例文档。出于性能考虑,可以使用用于 XML 的流 API 来拉取 XForms 实例并放入到一个新的 Document Object Model (DOM) 文档中。

上一页  1 2 3 4 5 6  下一页

Tags:使用 Java 验证

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接