public static OpenSSL.Crypto.EC.Key GenerateKey() { Program.RandomSeedReg(); OpenSSL.Crypto.EC.Key key = OpenSSL.Crypto.EC.Key.FromCurveName(OpenSSL.Core.Objects.NID.secp256k1); // SetSecretBytes { OpenSSL.Core.BigNumber padBN = OpenSSL.Core.BigNumber.FromArray(OpenSSL.Core.Random.Bytes(32)); //byte[] data = new byte[32]; //for (int i = 0; i < data.Length; i++) // data[i] = 0x3f; //OpenSSL.Core.BigNumber padBN = OpenSSL.Core.BigNumber.FromArray(data); // RegenerateKey { OpenSSL.Crypto.EC.Point pubPt = new OpenSSL.Crypto.EC.Point(key.Group); pubPt.Multiply(padBN, null, null, new OpenSSL.Core.BigNumber.Context()); key.SetPrivateKey(padBN); key.SetPublicKey(pubPt); } padBN.Clear(); } key.SetConversionForm(OpenSSL.Crypto.EC.Point.PointConversionForm.Compressed); //byte[] pubBytes = key.GetPublicBytes(); return(key); }
internal void BeginSsl(TcpClient c) { try { _client = c; // Creates the key pair byte[] dh512_p = { 0xA4, 0x56, 0x47, 0x7F, 0x90, 0xF0, 0xDE, 0xFE, 0x73, 0x1A, 0xBD, 0x3E, 0xA9, 0xF5, 0x69, 0x46, 0x29, 0x0B, 0x47, 0x55, 0x8C, 0xE8, 0xF3, 0xDF, 0xF6, 0x1B, 0xC5, 0x29, 0x1B, 0x81, 0x97, 0x3E, 0xE4, 0xD9, 0xC8, 0x2B, 0xBB, 0x2B, 0x7A, 0x37, 0xE1, 0x18, 0xDF, 0xEC, 0x6B, 0xEC, 0x04, 0x77, 0x6D, 0x51, 0x3C, 0x7C, 0xB7, 0x81, 0xBD, 0x7F, 0xC9, 0x5A, 0x04, 0xB4, 0xA4, 0x3E, 0x8B, 0x5B }; OpenSSL.Core.BigNumber b1 = OpenSSL.Core.BigNumber.FromArray(dh512_p); OpenSSL.Core.BigNumber b2 = OpenSSL.Core.BigNumber.FromArray(new byte[] { 0x02 }); var dh = new OpenSSL.Crypto.DH(b1, b2); _stream = new OpenSSL.SSL.SslAnonStream(_client.GetStream(), false); ((OpenSSL.SSL.SslAnonStream)_stream).AuthenticateAsServer(dh, OpenSSL.SSL.SslProtocols.Tls, OpenSSL.SSL.SslStrength.All); _stream.ReadTimeout = Nagios.Net.Client.Nrpe.NrpeConstants.DEFAULT_SOCKET_TIMEOUT; _stream.WriteTimeout = Nagios.Net.Client.Nrpe.NrpeConstants.DEFAULT_SOCKET_TIMEOUT; Read(); } catch (Exception ex) { ProcessException(ex); } }