XML 签名的引用中的 DigestValues 从何而来?

Where do the DigestValues in the References of a XML Signature come from?

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

我尝试获取其中的元素,例如,一个引用指向 KeyInfo,我尝试获取证书的指纹,但没有用。

我试图只散列部分的搅拌

我已经尝试过 XPath,但没有用,因为我必须在将所有内容输出为 XML

之前生成 DigestValue

不幸的是,由于保密原因,我不能 post 任何代码,但是为了大致了解我在说什么,我正在使用 w3c 标准:https://www.w3.org/TR/xmldsig-core1/

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

我想通了。

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

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

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