Как получить информацию из цифровой подписи XML (файл .cer) в C #? - PullRequest
1 голос
/ 02 мая 2019

Я использую сервис, который возвращает подпись 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 #).

1 Ответ

0 голосов
/ 04 мая 2019

Вам не нужен 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 ('=') в соответствии с вашими требованиями.

...