Как преобразовать сертификат 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).