我正在使用返回XML签名的服务。现在我的任务是从响应xml签名中识别签名者名称。
XML响应签名格式:
<?xml version="1.0" encoding="UTF-8"?>
<EsignResp errCode="NA" errMsg="NA" resCode="XXXXXXXXXXXXXXXXXXXXXXXX" status="1" ts="2019-05-02T15:15:13" txn="XXXXXXXXXXXXXXXXXXXXXXXX">
<UserX509Certificate>XXXXXXXXXXXXXXXXXXXXXXXX</UserX509Certificate>
<Signatures>
<DocSignature error="" id="1" sigHashAlgorithm="SHA256">XXXXXXXXXXXXXXXXXXXXXXXX</DocSignature>
</Signatures>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<DigestValue>XXXXXXXXXXXXXXXXXXXXXXXX</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>XXXXXXXXXXXXXXXXXXXXXXXX</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>XXXXXXXXXXXXXXXXXXXXXXXX</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509SubjectName>XXXXXXXXXXXXXXXXXXXXXXXX</X509SubjectName>
<X509Certificate>XXXXXXXXXXXXXXXXXXXXXXXX</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</EsignResp>
在<UserX509Certificate>
标签中,我获得证书详细信息,例如签发给,签发人,有效期自。
有什么方法可以使用itextsharp(C#)获取这些信息。
答案 0 :(得分:0)
您不需要itestsharp即可处理和解析证书。都是关于pdf的,而不是xml所必需的。
您可以使用以下代码将Base64字符串转换为X509Certificate2类型。
byte[] bytes = Convert.FromBase64String("MII<...>==");
var cert = new X509Certificate2(bytes);
然后上面的cert变量将具有类似的属性
cert.Issuer or cert.IssuerName
cert.Subject or cert.SubjectName
可以根据需要通过split(',')。split('=')解析内容。