Search code examples
c#.netcryptographycertificatersacryptoserviceprovider

Best way to initiate RSACryptoServiceProvider from x509Certificate2?


What is the best way to initate a new RSACryptoServiceProvider object from an X509Certificate2 I pulled out of a key store? The certificate is associated with both public (for encryption) and private (for decryption) keys.

I'm current using the FromXmlString method but there must be a better way.

Thanks


Solution

  • Note: While this is the accepted answer and was valid back in 2011, this code won't work now under .NET Core. See this answer if you are using .NET Framework 4.6+, or .NET Core / .NET.

    RSACryptoServiceProvider publicKeyProvider = 
        (RSACryptoServiceProvider)certificate.PublicKey.Key;
    

    and

    RSACryptoServiceProvider privateKeyProvider = 
        (RSACryptoServiceProvider)certificate.PrivateKey;
    

    The key property on the public or private key property of the certificate is of type AsymmetricAlgorithm.