public ECDHEPSKServerKeyExchange(ECDHEKeyExchange keyExchange) { _EllipticCurveType = TEllipticCurveType.NamedCurve; _EllipticCurve = keyExchange.Curve; System.IO.MemoryStream stream = new System.IO.MemoryStream(); stream.WriteByte((byte)_EllipticCurveType); NetworkByteOrderConverter.WriteUInt16(stream, (ushort)_EllipticCurve); byte[] pointEncoded = keyExchange.PublicKey.Q.GetEncoded(false); stream.WriteByte((byte)pointEncoded.Length); stream.Write(pointEncoded, 0, pointEncoded.Length); _ServerParams = stream.ToArray(); }
public ECDHEPSKServerKeyExchange(ECDHEKeyExchange keyExchange) { _EllipticCurveType = TEllipticCurveType.NamedCurve; _EllipticCurve = keyExchange.Curve; System.IO.MemoryStream stream = new System.IO.MemoryStream(); stream.WriteByte((byte)_EllipticCurveType); NetworkByteOrderConverter.WriteUInt16(stream, (ushort)_EllipticCurve); byte[] pointEncoded = keyExchange.PublicKey.Q.GetEncoded(false); stream.WriteByte((byte)pointEncoded.Length); stream.Write(pointEncoded, 0, pointEncoded.Length); _ServerParams = stream.ToArray(); }
public ECDHEServerKeyExchange(ECDHEKeyExchange keyExchange, THashAlgorithm hashAlgorithm, TSignatureAlgorithm signatureAlgorithm, AsymmetricKeyParameter serverPrivateKey) { _EllipticCurveType = TEllipticCurveType.NamedCurve; _EllipticCurve = keyExchange.Curve; _HashAlgorithm = hashAlgorithm; _SignatureAlgorithm = signatureAlgorithm; System.IO.MemoryStream stream = new System.IO.MemoryStream(); stream.WriteByte((byte)_EllipticCurveType); NetworkByteOrderConverter.WriteUInt16(stream, (ushort)_EllipticCurve); byte[] pointEncoded = keyExchange.PublicKey.Q.GetEncoded(false); stream.WriteByte((byte)pointEncoded.Length); stream.Write(pointEncoded, 0, pointEncoded.Length); _ServerParams = stream.ToArray(); //IDigest hashMD5 = GetDigest(THashAlgorithm.MD5); //IDigest hashSHA = GetDigest(THashAlgorithm.SHA1); //int size = hashMD5.GetDigestSize(); //byte[] hash = new byte[size + hashSHA.GetDigestSize()]; //hashMD5.BlockUpdate(clientRandom.RandomBytes, 0, clientRandom.RandomBytes.Length); //hashMD5.BlockUpdate(serverRandom.RandomBytes, 0, serverRandom.RandomBytes.Length); //hashMD5.BlockUpdate(_ServerParams, 0, _ServerParams.Length); //hashMD5.DoFinal(hash, 0); //hashSHA.BlockUpdate(clientRandom.RandomBytes, 0, clientRandom.RandomBytes.Length); //hashSHA.BlockUpdate(serverRandom.RandomBytes, 0, serverRandom.RandomBytes.Length); //hashSHA.BlockUpdate(_ServerParams, 0, _ServerParams.Length); //hashSHA.DoFinal(hash, size); //ISigner signer = GetSigner(signatureAlgorithm, THashAlgorithm.None, serverPrivateKey); //signer.BlockUpdate(hash, 0, hash.Length); //_Signature = signer.GenerateSignature(); ISigner signer = GetSigner(signatureAlgorithm, hashAlgorithm, serverPrivateKey); byte[] clientRandomBytes = keyExchange.ClientRandom.Serialise(); byte[] serverRandomBytes = keyExchange.ServerRandom.Serialise(); signer.BlockUpdate(clientRandomBytes, 0, clientRandomBytes.Length); signer.BlockUpdate(serverRandomBytes, 0, serverRandomBytes.Length); signer.BlockUpdate(_ServerParams, 0, _ServerParams.Length); _Signature = signer.GenerateSignature(); }
public ECDHEPSKServerKeyExchange() { _EllipticCurveType = TEllipticCurveType.NamedCurve; }
public ECDHEServerKeyExchange(ECDHEKeyExchange keyExchange, THashAlgorithm hashAlgorithm, TSignatureAlgorithm signatureAlgorithm, AsymmetricKeyParameter serverPrivateKey) { _EllipticCurveType = TEllipticCurveType.NamedCurve; _EllipticCurve = keyExchange.Curve; _HashAlgorithm = hashAlgorithm; _SignatureAlgorithm = signatureAlgorithm; System.IO.MemoryStream stream = new System.IO.MemoryStream(); stream.WriteByte((byte)_EllipticCurveType); NetworkByteOrderConverter.WriteUInt16(stream, (ushort)_EllipticCurve); byte[] pointEncoded = keyExchange.PublicKey.Q.GetEncoded(false); stream.WriteByte((byte)pointEncoded.Length); stream.Write(pointEncoded, 0, pointEncoded.Length); _ServerParams = stream.ToArray(); //IDigest hashMD5 = GetDigest(THashAlgorithm.MD5); //IDigest hashSHA = GetDigest(THashAlgorithm.SHA1); //int size = hashMD5.GetDigestSize(); //byte[] hash = new byte[size + hashSHA.GetDigestSize()]; //hashMD5.BlockUpdate(clientRandom.RandomBytes, 0, clientRandom.RandomBytes.Length); //hashMD5.BlockUpdate(serverRandom.RandomBytes, 0, serverRandom.RandomBytes.Length); //hashMD5.BlockUpdate(_ServerParams, 0, _ServerParams.Length); //hashMD5.DoFinal(hash, 0); //hashSHA.BlockUpdate(clientRandom.RandomBytes, 0, clientRandom.RandomBytes.Length); //hashSHA.BlockUpdate(serverRandom.RandomBytes, 0, serverRandom.RandomBytes.Length); //hashSHA.BlockUpdate(_ServerParams, 0, _ServerParams.Length); //hashSHA.DoFinal(hash, size); //ISigner signer = GetSigner(signatureAlgorithm, THashAlgorithm.None, serverPrivateKey); //signer.BlockUpdate(hash, 0, hash.Length); //_Signature = signer.GenerateSignature(); ISigner signer = GetSigner(signatureAlgorithm, hashAlgorithm, serverPrivateKey); byte[] clientRandomBytes = keyExchange.ClientRandom.Serialise(); byte[] serverRandomBytes = keyExchange.ServerRandom.Serialise(); signer.BlockUpdate(clientRandomBytes, 0, clientRandomBytes.Length); signer.BlockUpdate(serverRandomBytes, 0, serverRandomBytes.Length); signer.BlockUpdate(_ServerParams, 0, _ServerParams.Length); _Signature = signer.GenerateSignature(); }
public ECDHEPSKServerKeyExchange() { _EllipticCurveType = TEllipticCurveType.NamedCurve; }