public void CanCompareDH() { using (var dh = new DH()) { dh.GenerateKeys(); using (var lhs = new CryptoKey(dh)) { Assert.AreEqual(lhs, lhs); using (var rhs = new CryptoKey(dh)) { Assert.AreEqual(lhs, rhs); } using (var dh2 = new DH(1, 5)) { dh2.GenerateKeys(); using (var other = new CryptoKey(dh2)) { Assert.AreNotEqual(lhs, other); } } } } }
static void Main(string[] args) { //BigNumber BN_num_bytes = new BigNumber(); DH CS_DH = new DH(); //DH_new() CS_DH.P = BigNumber.FromArray(g_bytGSYCGAATDHKEParametersPrimeNumber2048); //(*pDH)->p = BN_bin2bn(g_bytGSYCGAATDHKEParametersPrimeNumber2048, sizeof(g_bytGSYCGAATDHKEParametersPrimeNumber2048), NULL); CS_DH.G = BigNumber.FromArray(g_bytGSYCGAATDHKEParametersBaseNumber2048); //(*pDH)->g = BN_bin2bn(g_bytGSYCGAATDHKEParametersBaseNumber2048, sizeof(g_bytGSYCGAATDHKEParametersBaseNumber2048), NULL); String m_lpParametersString = CS_DH.PEM.Replace("-----BEGIN DH PARAMETERS-----", ""); m_lpParametersString = m_lpParametersString.Replace("-----END DH PARAMETERS-----", ""); m_lpParametersString = m_lpParametersString.Replace("\n", "");//i2d_DHparams(pDH, lpParameters) + GSYCGAATBase64Encode(&lpParametersString, lpParameters, iLength) Console.WriteLine("Parameters: {0}\n", m_lpParametersString); CS_DH.GenerateKeys(); //iResult = DH_generate_key(pDH) byte[] bybuf = new byte[256]; CS_DH.PublicKey.ToBytes(bybuf); //iPublicKeyLength = BN_num_bytes(pDH->pub_key); String m_lpPublicKeyString = Base64_encode(bybuf); //GSYCGAATBase64Encode(&lpPublicKeyString, lpPublicKey, iLength) Console.WriteLine("Public Key: {0}\n", m_lpPublicKeyString); Console.WriteLine("DHKE: Ready!"); CS_DH.PrivateKey.ToBytes(bybuf); Pause(); }
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(); }
public void CanCreateFromDH() { using (DH dh = new DH()) { dh.GenerateKeys(); using (CryptoKey key = new CryptoKey(dh)) { Assert.AreEqual(CryptoKey.KeyType.DH, key.Type); } } }
public byte[] CreateServerKeyPacket() { _clientIV = new byte[8]; _serverIV = new byte[8]; _keyExchange = new DH(BigNumber.FromHexString(P), BigNumber.FromHexString(G)); _keyExchange.GenerateKeys(); return(GeneratePacket()); }
public void CanCreateFromDH() { using (var dh = new DH()) { dh.GenerateKeys(); using (var key = new CryptoKey(dh)) { Assert.AreEqual(CryptoKey.KeyType.DH, key.Type); Assert.AreEqual(dh.Handle, key.GetDH().Handle); } using (var key = new CryptoKey()) { key.Assign(dh); Assert.AreEqual(dh.Handle, key.GetDH().Handle); } } }
private void Form1_Load(object sender, EventArgs e) { CS_DH = new DH(); //DH_new() CS_DH.P = BigNumber.FromArray(g_bytGSYCGAATDHKEParametersPrimeNumber2048); //(*pDH)->p = BN_bin2bn(g_bytGSYCGAATDHKEParametersPrimeNumber2048, sizeof(g_bytGSYCGAATDHKEParametersPrimeNumber2048), NULL); CS_DH.G = BigNumber.FromArray(g_bytGSYCGAATDHKEParametersBaseNumber2048); //(*pDH)->g = BN_bin2bn(g_bytGSYCGAATDHKEParametersBaseNumber2048, sizeof(g_bytGSYCGAATDHKEParametersBaseNumber2048), NULL); String m_lpParametersString = CS_DH.PEM.Replace("-----BEGIN DH PARAMETERS-----", ""); m_lpParametersString = m_lpParametersString.Replace("-----END DH PARAMETERS-----", ""); m_lpParametersString = m_lpParametersString.Replace("\n", ""); //i2d_DHparams(pDH, lpParameters) + GSYCGAATBase64Encode(&lpParametersString, lpParameters, iLength) richTextBox1.Text = m_lpParametersString; //Console.WriteLine("Parameters: {0}\n", m_lpParametersString); CS_DH.GenerateKeys(); //iResult = DH_generate_key(pDH) byte[] bybuf = new byte[256]; CS_DH.PublicKey.ToBytes(bybuf); //iPublicKeyLength = BN_num_bytes(pDH->pub_key); String m_lpPublicKeyString = Base64_encode(bybuf); //GSYCGAATBase64Encode(&lpPublicKeyString, lpPublicKey, iLength) richTextBox2.Text = m_lpPublicKeyString; //Console.WriteLine("Public Key: {0}\n", m_lpPublicKeyString); }