Получить открытый ключ сертификата в формате PKCS8.C#

Место общения программистов C#
Ответить
Anonymous
 Получить открытый ключ сертификата в формате PKCS8.

Сообщение Anonymous »

Среда:
Windows 11, круглосуточно
.Net Framework 4.8, 4.7.2Проблема:
Я не понимаю, как получить открытый ключ сертификата сервера в формате PKCS8 с помощью класса X509Certificate.Объяснение:
Я реализую проверку сертификата пользовательского сервера для SSL-соединения (так называемое закрепление сертификата) следующим образом:
  • Создайте новый SSLStream:

Код: Выделить всё

SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null);
  • Объявите метод ValidateServerCertificate():

Код: Выделить всё

    public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) {}
  • Получить открытый ключ сертификата сервера

Код: Выделить всё

    certificate.GetPublicKey()
Открытый ключ, который я получаю, имеет формат PKCS1, и я не могу найти в .Net Framework какую-либо функцию, позволяющую получить его в формате PKCS8 или преобразовать из PCKS1 в PKCS8. В качестве запасного варианта я использую статический префикс для формата PKCS8, который работает хорошо, но действителен только для открытых ключей длиной 2048 бит:

Код: Выделить всё

private static byte[] pkcs8Prefix = { 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00 };
byte[] pkcs8PublicKey = pkcs8Prefix.Concat(certificate.GetPublicKey()).ToArray();
Какую функцию .Net Framework я могу использовать для получения открытого ключа в формате PKCS8?

Подробнее здесь: https://stackoverflow.com/questions/793 ... cs8-format
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»