/// <summary> /// Create and initialize structure from RSAParameters /// </summary> /// <returns>Initialized structure</returns> /// <note>http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx</note> public static PrivateKeyBlob FromRSAParameters(RSAParameters @params) { var privateKeyBlob = new PrivateKeyBlob { Header = BlobHeader.FromRSAParameters(KeyBlobType.PrivateKeyBlob), RSAPubKey = RSAPubKey.FromRSAParameters(@params, true), }; privateKeyBlob.Modulus = new byte[@params.N.Length]; for (int i = 0; i < privateKeyBlob.Modulus.Length; i++) { privateKeyBlob.Modulus[i] = @params.N[@params.N.Length - i - 1]; } privateKeyBlob.Prime1 = new byte[@params.P.Length]; for (int i = 0; i < privateKeyBlob.Prime1.Length; i++) { privateKeyBlob.Prime1[i] = @params.P[@params.P.Length - i - 1]; } privateKeyBlob.Prime2 = new byte[@params.Q.Length]; for (int i = 0; i < privateKeyBlob.Prime2.Length; i++) { privateKeyBlob.Prime2[i] = @params.Q[@params.Q.Length - i - 1]; } privateKeyBlob.Exponent1 = new byte[@params.DP.Length]; for (int i = 0; i < privateKeyBlob.Exponent1.Length; i++) { privateKeyBlob.Exponent1[i] = @params.DP[@params.DP.Length - i - 1]; } privateKeyBlob.Exponent2 = new byte[@params.DQ.Length]; for (int i = 0; i < privateKeyBlob.Exponent2.Length; i++) { privateKeyBlob.Exponent2[i] = @params.DQ[@params.DQ.Length - i - 1]; } privateKeyBlob.Coefficient = new byte[@params.IQ.Length]; for (int i = 0; i < privateKeyBlob.Coefficient.Length; i++) { privateKeyBlob.Coefficient[i] = @params.IQ[@params.IQ.Length - i - 1]; } privateKeyBlob.PrivateExponent = new byte[@params.D.Length]; for (int i = 0; i < privateKeyBlob.PrivateExponent.Length; i++) { privateKeyBlob.PrivateExponent[i] = @params.D[@params.D.Length - i - 1]; } return(privateKeyBlob); }
/// <summary> /// Create and initialize structure from RSAParameters /// </summary> /// <returns>Initialized structure</returns> /// <note>http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx</note> public static PublicKeyBlob FromRSAParameters(RSAParameters @params) { var publicKeyBlob = new PublicKeyBlob { Header = BlobHeader.FromRSAParameters(KeyBlobType.PublicKeyBlob), RSAPubKey = RSAPubKey.FromRSAParameters(@params, false), Modulus = new byte[@params.N.Length], }; for (int i = 0; i < publicKeyBlob.Modulus.Length; i++) { publicKeyBlob.Modulus[i] = @params.N[@params.N.Length - i - 1]; } return(publicKeyBlob); }