我正在尝试使用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?
答案 0 :(得分:0)
好吧,经过一段时间的搜索,我发现区别在于电子邮件信息的表示形式,而在第一个中,用que'E'表示,第二个则使用OID描述(1.2.840.113549.1.9.1) ,另一方面,“ info@andesscd.com.co”以asn.1编码,表示为“ 1614696e666f40616e6465737363642e636f6d2e636f”。
对于任何类,我都找不到任何实现方法,因此我手动进行了搜索,因为在asn.1中我搜索了一个库。