在xades xml文档中不会像期望那样获得IssuerName证书

时间:2018-07-24 22:21:00

标签: c# xml

我正在尝试使用C#中的xades签名xml文档,并且在发送信息时,Web服务将返回:

  

“ com.indra.mmdd.signature.exceptions.ValidateException:xades4j.verification.CertRefUtils $ 1:属性'SigningCertificate'的验证失败:无效的问题名称:C = CO,L = Bogota DC,O = Andes SCD。 OU =最终认证部门,CN = CA ANDES SCD SA类别II,E = info @ andesscd.com.co”。

我认为这是由于产生了SigningCertificate标签,例如:

<X509IssuerName>
C=CO, L=Bogota D.C., O=Andes SCD., OU=Division de certificacion entidad final, CN=CA ANDES SCD S.A. Clase II, E=info@andesscd.com.co
</X509IssuerName>
<X509SerialNumber>6269250364567719715</X509SerialNumber>

但是Web服务期待更多类似的东西:

<xades:IssuerSerial>
<ds:X509IssuerName>
C=CO,L=Bogota D.C.,O=Andes SCD.,OU=Division de certificacion entidad final,CN=CA ANDES SCD S.A. Clase II,1.2.840.113549.1.9.1=#1614696e666f40616e6465737363642e636f6d2e636f
</ds:X509IssuerName>
<ds:X509SerialNumber>9128602840918470673</ds:X509SerialNumber>
</xades:IssuerSerial>

为什么我得到一个不同的IssuerName?我正在使用

x509IssuerName.InnerText = signingCertificate.Issuer;

如何生成所需的IssuerName?

1 个答案:

答案 0 :(得分:0)

好吧,经过一段时间的搜索,我发现区别在于电子邮件信息的表示形式,而在第一个中,用que'E'表示,第二个则使用OID描述(1.2.840.113549.1.9.1) ,另一方面,“ info@andesscd.com.co”以asn.1编码,表示为“ 1614696e666f40616e6465737363642e636f6d2e636f”。

对于任何类,我都找不到任何实现方法,因此我手动进行了搜索,因为在asn.1中我搜索了一个库。