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();
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 5
0
		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();

		}
Exemplo n.º 6
0
 public ECDHEPSKServerKeyExchange()
 {
     _EllipticCurveType = TEllipticCurveType.NamedCurve;
 }