Я хочу проверить открытый ключ моего SSL-сертификата в моем приложении.
Для этого я обрабатываю ServicePointManager.ServerCertificateValidationCallback, где я использую этот код
private static bool ValidateServerCertficate(object sender, X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
var myKey = System.Convert.ToBase64String(HexStringToHex(certificate?.GetPublicKeyString()));
return supportedPublicKey == myKey;
}
где supportPublicKey - строка, которую я получаю из консоли
openssl s_client -connect gibdd-pay.ru:443 | openssl x509 -pubkey -noout
Проблема заключается в том, что эти два значения различны. Похоже, консоль возвращает мне PublicKeyString с каким-то префиксом. Ключ в консоли выглядит как
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A + PublicKeyString
Почему это происходит? Как я могу получить этот префикс из моего приложения?