Как я могу конвертировать BouncyCastle X509Certificate в X509Certificate2? - PullRequest
5 голосов
/ 15 ноября 2011

Есть ли способ конвертировать Org.BouncyCastle.X509.X509Certificate в System.Security.Cryptography.X509Certificates.X509Certificate2?

Обратная операция проста, сочетая Org.BouncyCastle.X509.X509CertificateParser с System.Security.Cryptography.X509Certificates.X509Certificate2.Export().

Ответы [ 3 ]

7 голосов
/ 16 ноября 2011

Легко !!

using B = Org.BouncyCastle.X509; //Bouncy certificates
using W = System.Security.Cryptography.X509Certificates;

W.X509Certificate2 certificate = new W.X509Certificate2();
certificate.Import(pdfCertificate.GetEncoded());

И теперь я могу проверить цепочку сертификатов на сервере:

W.X509Chain ch = new W.X509Chain();
ch.ChainPolicy.RevocationMode = W.X509RevocationMode.NoCheck;
if (!ch.Build(certificate))
   res |= ErroresValidacion.CAInvalida; 

Полезно для проверки PDF-сертификатов, извлеченных с помощью iTextSharp.

0 голосов
/ 14 февраля 2018

С https://github.com/dotnet/corefx/wiki/ApiCompat:

Большинство пользователей объектов X509Certificate и X509Certificate2 предполагают, что объект является неизменным, за исключением методов Reset () / Dispose (), использование Import нарушаетэто предположение.

Другими словами, попытка использовать импорт вызывает исключение в ядре .net.Теперь вы должны использовать:

new X509Certificate(cert.GetEncoded());

, но в соответствии с анализатором API .net (https://docs.microsoft.com/en-us/dotnet/standard/analyzers/api-analyzer),

предупреждение PC001: X509Certificate2.X509Certificate2 (byte [])не поддерживается в macOS

0 голосов
/ 27 января 2017

Я думаю, что это лучший ответ:

var cert = pdf.Certificates[0];//Org.BouncyCastle.X509.X509Certificate
        var cert50 = new X509Certificate();
        cert50.Import(cert.GetEncoded());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...