In my current task I have to construct private key object from its DER bytes. In OpenSSL I can easily do this with d2i_RSAPrivateKey function but in .NET this doesn't seems to be an easy task. I hoped in BouncyCastle this can be done in single method call but it requires the following code to achieve the functionality
byte privateKeyDer = File.ReadAllBytes("PrivateKey.der"); var derSequence = new Asn1InputStream(privateKeyDer).ReadObject(); var privateKeyStructure = new RsaPrivateKeyStructure((Asn1Sequence)derSequence); var privateCrtKeyParameters = new RsaPrivateCrtKeyParameters(privateKeyStructure.Modulus, privateKeyStructure.PublicExponent, privateKeyStructure.PrivateExponent, privateKeyStructure.Prime1, privateKeyStructure.Prime2, privateKeyStructure.Exponent1, privateKeyStructure.Exponent2, privateKeyStructure.Coefficient); var privateKey = DotNetUtilities.ToRSA(privateCrtKeyParameters); // returns RSA object
Please note the classes Asn1InputStream, RsaPrivateKeyStructure, RsaPrivateCrtKeyParameters and DotNetUtilities are provided by BouncyCastle.