如何将PEM编码的X509证书转换为Bouncycastle X509证书? 我收到了代表签名证书颁发者的PEM编码的X509证书(在RFC 5280中定义)。 PEM编码格式(在RFC 1421中定义)要求行长为64个字符。 通过HttpWebRequest(application / json; charset = utf-8)接收PEM编码的证书
大多数情况下,这是可行的:
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,响应是StreamReader(response.GetResponseStream(),Encoding.UTF8)中的UTF8。