Получить закрытый ключ из сертификата BouncyCastle X509? C#

Обычно, когда я захватываю X509Certificate2 из моего keystore я могу звонить .PrivateKey получать закрытый ключ сертификата как AsymmetricAlgorithm. Однако я решил использовать замок Bouncy и его экземпляр X509Certificate только имеет a getPublicKey(); Я не вижу способ вытащить закрытый ключ из сертификата Какие-либо идеи?

Я получаю X509Certificate2 из своего Windows - МОИ keystore затем используют:

//mycert is an X509Certificate2 retrieved from Windows-MY Keystore
X509CertificateParser certParser = new X509CertificateParser();
X509Certificate privateCertBouncy = certParser.ReadCertificate(mycert.GetRawCertData());
AsymmetricKeyParameter pubKey = privateCertBouncy.GetPublicKey();
//how do i now get the private key to make a keypair?

Должен там так или иначе преобразовать a AsymmetricAlgorithm(Закрытый ключ C#) к a AsymmetricKeyParameter(bouncycastle закрытый ключ)?

10
задан Petey B 13 July 2010 в 19:10
поделиться

1 ответ

Я не очень хорошо знаю BouncyCastle, но мне кажется, что проще всего воссоздать ключ на основе параметров ключа.


    public static AsymmetricKeyParameter TransformRSAPrivateKey(AsymmetricAlgorithm privateKey)
    {
        RSACryptoServiceProvider prov = privateKey as RSACryptoServiceProvider;
        RSAParameters parameters = prov.ExportParameters(true);

        return new RsaPrivateCrtKeyParameters(
            new BigInteger(1,parameters.Modulus),
            new BigInteger(1,parameters.Exponent),
            new BigInteger(1,parameters.D),
            new BigInteger(1,parameters.P),
            new BigInteger(1,parameters.Q),
            new BigInteger(1,parameters.DP),
            new BigInteger(1,parameters.DQ),
            new BigInteger(1,parameters.InverseQ));
    }

Вы можете вызвать код с помощью


AsymmetricKeyParameter bouncyCastlePrivateKey = TransformRSAPrivateKey(mycert.PrivateKey);

Очевидно, что это предполагает, что сертификат включает RSA ключ, но тот же результат может быть достигнут для DSA с помощью DSACryptoServiceProvider и DSAParameters

19
ответ дан 3 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: