使用Chilkat生成含签名XML与X.509签名证书的PKCS7文档问题咨询
你遇到的问题是Chilkat Crypt2 组件的 OpaqueSignStringENC 方法默认未开启签名证书嵌入配置,调整以下参数即可满足需求:
核心调整点
Chilkat 为不透明PKCS7签名提供了专门的证书包含控制属性,你只需在原有配置逻辑中新增2行配置即可:
- 设置
OpaqueSignIncludeCert为true:开启签名方自身证书嵌入开关,输出的PKCS7结构会自动包含X.509 ASN编码格式的签名证书 - 按需设置
OpaqueSignIncludeCertChain:如果需要同时嵌入证书信任链的所有证书设为true,仅需签名方单张证书设为false即可
示例代码(C# 参考,其他语言逻辑一致)
Chilkat.Crypt2 crypt = new Chilkat.Crypt2(); // 原有配置逻辑保留 crypt.EncodingMode = "Base64"; crypt.HashAlgorithm = "SHA256"; crypt.Charset = "utf-8"; // 原有智能卡证书加载逻辑保留 Chilkat.Cert cert = new Chilkat.Cert(); cert.LoadFromSmartCard(""); crypt.SetSigningCert(cert); // 新增以下两行配置 crypt.OpaqueSignIncludeCert = true; crypt.OpaqueSignIncludeCertChain = false; // 调用原有签名方法即可得到符合要求的PKCS7结果 string signedResult = crypt.OpaqueSignStringENC("待签名的原始XML内容");
异常排查
如果调整配置后仍未生效,可先检查当前使用的Chilkat组件版本,v9.5.0.70及以上版本对该属性的多语言绑定支持完整,过低版本可升级后再测试。
内容的提问来源于stack exchange,提问作者Lucas H
相关产品推荐
相关产品推荐

