public void Execute(string[] args)
        {
            OpenSSL.Core.Random.Seed(rnd_seed);

            BigNumber.GeneratorHandler cb = new BigNumber.GeneratorHandler(this.OnStatus);
            DH a = new DH(64, DH.Generator5, cb, Console.Out);

            DH.CheckCode check = a.Check();
            if ((check & DH.CheckCode.CheckP_NotPrime) != 0)
            {
                Console.WriteLine("p value is not prime");
            }
            if ((check & DH.CheckCode.CheckP_NotSafePrime) != 0)
            {
                Console.WriteLine("p value is not safe prime");
            }
            if ((check & DH.CheckCode.UnableToCheckGenerator) != 0)
            {
                Console.WriteLine("unable to check the generator value");
            }
            if ((check & DH.CheckCode.NotSuitableGenerator) != 0)
            {
                Console.WriteLine("the g value is not a generator");
            }

            Console.WriteLine();
            Console.WriteLine("p    ={0}", a.P);
            Console.WriteLine("g    ={0}", a.G);

            DH b = new DH(a.P, a.G);

            a.NoExpConstantTime = false;
            b.NoExpConstantTime = true;

            a.GenerateKeys();
            Console.WriteLine("pri 1={0}", a.PrivateKey);
            Console.WriteLine("pub 1={0}", a.PublicKey);

            b.GenerateKeys();
            Console.WriteLine("pri 2={0}", b.PrivateKey);
            Console.WriteLine("pub 2={0}", b.PublicKey);

            byte[] aout = a.ComputeKey(b.PublicKey);
            string astr = BitConverter.ToString(aout);

            Console.WriteLine("key1 ={0}", astr);

            byte[] bout = b.ComputeKey(a.PublicKey);
            string bstr = BitConverter.ToString(bout);

            Console.WriteLine("key2 ={0}", bstr);

            if (aout.Length < 4 || astr != bstr)
            {
                throw new Exception("Error in DH routines");
            }

            a.Dispose();
            b.Dispose();
        }
Example #2
0
        void OnNewMessages(object state)
        {
            Message msg;

            while (m_connection.TryGetMessage(out msg))
            {
                InvokeMessageHandler((ClientMessage)msg);
            }

            m_onNewMessagesInvoked = false;

            while (m_connection.TryGetMessage(out msg))
            {
                InvokeMessageHandler((ClientMessage)msg);
            }

            if (m_connection.IsConnected == false)
            {
                trace.TraceInformation("OnDisconnect");

                m_world = null;

                m_state = ClientUserState.Disconnected;

                if (DisconnectEvent != null)
                {
                    DisconnectEvent();
                }

                DH.Dispose(ref m_connection);
            }
        }
Example #3
0
        void OnDisconnected()
        {
            trace.TraceInformation("OnDisconnected");

            DH.Dispose(ref m_connection);

            if (DisconnectEvent != null)
            {
                DisconnectEvent(this);
            }
        }
 public void Dispose()
 {
     if (LocalPrivateKey != null)
     {
         LocalPrivateKey.Dispose();
         LocalPrivateKey = null;
     }
     if (DH != null)
     {
         DH.Dispose();
         DH = null;
     }
     if (LocalPublicKey != null)
     {
         LocalPublicKey.Dispose();
         LocalPublicKey = null;
     }
 }