如何修改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
相关产品推荐
相关产品推荐

