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

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

 2010-01-15 00:00:00 来源:WEB开发网   
核心提示: 准备好 DOM 实例文档后,从要进行验证的 Signature DOM 节点中创建一个 DOMValidateContext,使用 Java 验证 Lotus Forms XML 数字签名(3),还需要用一个 KeySelector 从 KeyInfo 部分的签名证书中提取公共密匙,DOMVal

准备好 DOM 实例文档后,从要进行验证的 Signature DOM 节点中创建一个 DOMValidateContext。还需要用一个 KeySelector 从 KeyInfo 部分的签名证书中提取公共密匙。DOMValidateContext 使用前面小节中的定制 URI dereferencer 来执行 XML 标准化(canonization)。解组 DOMValidateContext 将创建一个 XMLSignature 对象,其 validate() 方法可以返回表示签名是否有效的信息。

对所有 XForms 实例中的所有签名进行验证后,将收集最终生成的结果,表示完整表单的验证状态。

处理 XForms 数据模型

如前一小节所述,Lotus Forms 中的 XML 签名是一个封装的签名,包含 XForms 实例的标记。要准确地验证此类签名,必须为 XForms 实例数据构建 DOM。W3C XForms 规范(http://www.w3.org/TR/xforms/#structure-model-instance)要求将实例数据提取到一个单独的 DOM 文档中,并且如果实例数据被内联到文档内部,那么必须从 XForms 实例元素及其祖先节点继承相应的名称空间。所有对数据的操作应当在单独的 DOM 文档中完成。

这种方法意味着要创建文档,必须从包含 XML 签名的 xform:instance 内容中克隆 DOM 子树。新的文档应当包含注释和 PI 节点,以及来自 xforms:instance 的惟一子元素。对于与清单 1 相对应的已签名表单,必须使用从所有祖先节点继承的名称空间创建一个新文档,其中包含 <data> 文档元素。这个文档被称为实例文档,而源文档被称为表单文档。


清单 2. 提取的文档元素的名称空间
<data xmlns="" xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" 
 xmlns:custom="http://www.ibm.com/xmlns/prod/XFDL/Custom" 
 xmlns:designer="http://www.ibm.com/xmlns/prod/workplace/forms/designer/2.6" 
 xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
 xmlns:dsxp="http://www.w3.org/2002/06/xmldsig-filter2" 
 xmlns:ev="http://www.w3.org/2001/xml-events" 
 xmlns:sigmeta="http://www.ibm.com/xmlns/prod/forms/signature/metadata/1.0" 
 xmlns:xfdl="http://www.ibm.com/xmlns/prod/XFDL/7.6" 
 xmlns:xforms="http://www.w3.org/2002/xforms" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
… 
</data> 

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

Tags:使用 Java 验证

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