internal byte[] GenerateKeyExchangeData(byte[] pms) { byte[] finalKeyExchangeData = null; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); try { rsa.ImportParameters(X509PublicKeyParser.GetRSAPublicKeyParameters(m_Session.Certificate)); } catch (Exception) { throw new SslAlertException(AlertLevel.Fatal, AlertDescription.BadCertificate); } RSAPKCS1KeyExchangeFormatter fmt = new RSAPKCS1KeyExchangeFormatter(rsa); byte[] keyExchangeData = fmt.CreateKeyExchange(pms); byte[] len = BitConverter.GetBytes((ushort)keyExchangeData.Length); if (BitConverter.IsLittleEndian) { Array.Reverse(len); } finalKeyExchangeData = ByteArray.Concat(len, keyExchangeData); return(finalKeyExchangeData); }
private System.Security.Cryptography.RSAParameters ConvertPublicKeyToRsaInfo() { System.Security.Cryptography.RSAParameters RSAKeyInfo; using (var cerStream = Application.GetResourceStream(new Uri("/RSAEncryptDemo;component/Files/DemoPublicKey.cer", UriKind.RelativeOrAbsolute)).Stream) { byte[] cerBuffer = new byte[cerStream.Length]; cerStream.Read(cerBuffer, 0, cerBuffer.Length); System.Security.Cryptography.X509Certificates.X509Certificate cer = new System.Security.Cryptography.X509Certificates.X509Certificate(cerBuffer); RSAKeyInfo = X509PublicKeyParser.GetRSAPublicKeyParameters(cer.GetPublicKey()); } return(RSAKeyInfo); }