コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: NrpeReader.cs プロジェクト: xonv/nagios-net-client
        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);
            }
        }