首页 > 解决方案 > XML 签名的引用中的 DigestValues 来自哪里?

问题描述

我必须签署一个 XML 文件并将签名和文件放在同一个 XML 中。问题是,我必须在参考中生成 DigestValues,但我不确定它们来自哪里。我有一个例子,URI 指向同一个文档中的一个元素。但我不知道如何在先应用变换的同时生成这些部分的哈希值。

我试图拥有里面的元素,例如一个引用指向 KeyInfo,我试图获取证书的指纹,但它不起作用。

我试图只是散列部分的搅拌

我尝试过 XPath,但它不起作用,因为我必须在将所有内容作为 XML 输出之前生成 DigestValue

不幸的是,由于保密原因,我无法发布任何代码,但为了粗略了解我所说的我正在使用 w3c 标准:https ://www.w3.org/TR/xmldsig-core1/

我要么想要一种创建元素的方法,比如将 KeyInfo 作为数据对象,要么想要一种获取 KeyInfo 的正确 DigestValue 的方法。

标签: javaxmlw3cw3c-validation

解决方案


我想到了。

当你创建一个元素时,你必须指定一个 ID 属性并告诉它是一个 ID 属性。例如:

Element element1 = doc.createElement("element1");
element1.setAttribute("Id", "123456789");
element1.setIdAttribute("Id", true);

这将确保在签名时 ID 将被视为 URI。


推荐阅读