You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改xadesjs中SignedInfo的CanonicalizationMethod属性?

修改xadesjs中SignedInfo的CanonicalizationMethod为EXC-C14N

当然可行!xadesjs底层依赖的xmldsigjs并没有把SignedInfo的规范化方法写死,你可以通过配置签名器参数或者直接操作底层对象来轻松修改它。

这里有两种适配不同代码场景的实现方式:

1. 配置xadesjs的XmlSigner(推荐)

当你使用xadesjs的XmlSigner创建签名时,直接在构造选项里指定canonicalizationAlgorithm为EXC-C14N的标准标识即可:

const { XmlSigner, algorithms } = require('xadesjs');

// 初始化签名器时替换默认的规范化算法
const signer = new XmlSigner({
    canonicalizationAlgorithm: algorithms.EXCLUSIVE_CANONICALIZATION, // 对应目标URI:http://www.w3.org/2001/10/xml-exc-c14n#
    signatureAlgorithm: algorithms.RSA_SHA256,
    // 补充其他必填参数(如签名密钥、待签名对象等)
});

// 执行后续签名流程
// signer.sign(...)

使用内置的algorithms常量比手动写URI字符串更可靠,能避免拼写错误。

2. 直接操作xmldsigjs的SignedInfo对象

如果你的代码直接接触到了xmldsigjs的SignedInfo实例,可以手动替换它的规范化方法属性:

const { SignedInfo, algorithms } = require('xmldsigjs');

const signedInfo = new SignedInfo();
// 替换默认的C14N为EXC-C14N
signedInfo.CanonicalizationMethod = new algorithms.CanonicalizationMethod(algorithms.EXCLUSIVE_CANONICALIZATION);

这样生成的SignedInfo节点里,<ds:CanonicalizationMethod>就会自动使用你需要的EXC-C14N算法URI,完全满足你对整个SignedInfo属性的修改需求。

内容的提问来源于stack exchange,提问作者losik123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:59:45