public void EstablishKeyExchange(BigInteger serverKey) { BigInteger secretKey = DiffieHellman.GenerateSecretKey(serverKey, _privateKey); Interlocked.Exchange(ref _secretKey, secretKey); byte[] key = _secretKey.ToByteArray(); Interlocked.Exchange(ref _aes, Rijndael.Create()); _aes.Key = Hash.SHA256.Hash(key); _aes.IV = new byte[16]; _aes.Padding = PaddingMode.PKCS7; }
public void GenerateLocalKeys() { _privateKey = DiffieHellman.GeneratePrivateKey(PrivateKeyBitLength); _publicKey = DiffieHellman.GeneratePublicKey(_privateKey); }