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(); }
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); } }
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; } }