如何在此 Java 代码中正确更改规范化方法?

How to properly change Canonicalization Method in this Java code?

我正在使用

import org.apache.xml.security.c14n.Canonicalizer;

在我的代码中,用于规范化签名的行如下所示:

outputStream.write(Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS).canonicalizeSubtree(doc));

我的问题是,此方法给我留下了一个使用方法 http://www.w3.org/TR/2001/REC-xml-c14n-20010315 规范化的 XML 文件,而 http://www.w3.org/2001/10/xml-exc-c14n# 是我被要求做的。

因此,作为对数字签名等领域完全陌生的人:我可以通过快速简便的修复来达到预期的结果吗?

您需要指定排除 XML 评论的规范化方法,在本例中为 ALGO_ID_C14N_EXCL_OMIT_COMMENTS,转换为 http://www.w3.org/2001/10/xml-exc-c14n#

有关 Apache Santuario 库的 constant field values overview 的更多详细信息。