Как преобразовать сертификат X509 в кодировке PEM в Org.BouncyCastle.X509.X509Сертификат в C # - PullRequest
0 голосов
/ 22 декабря 2018

Как преобразовать сертификат X509 в кодировке PEM в сертификат Bouncycastle X509?Я получаю сертификат X509 в кодировке PEM (определенный в RFC 5280), который представляет издателя сертификата подписи.Формат кодирования PEM (определенный в RFC 1421) требует длины строки 64 символа.Сертификат в кодировке PEM получен через HttpWebRequest (application / json; charset = utf-8)

. Это то, что работает большую часть времени:

Org.BouncyCastle.X509.X509Certificate pemToX509Certificate(string signature)
    {
        byte[] buffer = GetBytesFromPEM("CERTIFICATE", signature);
        X509CertificateParser parser = new X509CertificateParser();
        Org.BouncyCastle.X509.X509Certificate cert = parser.ReadCertificate(buffer);
        return cert;
    }

    byte[] GetBytesFromPEM(string type, string pem)
    {
        byte[] bytes = Encoding.Default.GetBytes(pem);
        pem = Encoding.UTF8.GetString(bytes);
        string header = String.Format("-----BEGIN {0}-----", type);
        string footer = String.Format("-----END {0}-----", type);
        int start = pem.IndexOf(header) + header.Length;
        int end = pem.IndexOf(footer, start);
        string base64 = pem.Substring(start, (end - start));

        return Convert.FromBase64String(base64);
    }

Это правильный способсделай это?Особенно часть Encoding.UTF8.GetString?Потому что я уже специально говорю HttpWebRequest, что ответ является UTF8 в StreamReader (response.GetResponseStream (), Encoding.UTF8).

...