Example #1
0
        internal void Receive(ICertificateProvider certProvider, INetState ns, HttpsReader reader)
        {
            RecordHandshake(reader.Buffer, reader.Length, !reader.IsDecrypted);
            EHandshake handshakeType      = (EHandshake)reader.ReadByte();
            int        handshakeMsgLength = reader.Read24BitInt();

            HttpsReader.VerifyLengthRemaining(reader, handshakeMsgLength, "Ssl handshake");
            switch (handshakeType)
            {
            case EHandshake.ClientHello:
                ReceiveClientHello(certProvider, ns, reader);
                break;

            case EHandshake.ClientKeyExchange:
                ReceiveClientKeyExchange(certProvider, ns, reader);
                break;

            case EHandshake.Finished:
                ReceiveClientFinished(ns, reader);
                break;

            default:
                ns.Send(new HttpsSmsgAlert(ns.Https, 2, 10));
                throw new HttpsException($"sent unknown handshake 0x{handshakeType:X}", reader);
            }
        }
 public SDevice(SVendor vendor, SFunctionArray function, EHandshake handshake, byte address)
 {
     this.Vendor    = new SVendor(vendor.Brand, vendor.Model, vendor.Version);
     this.Function  = function;
     this.Handshake = handshake;
     this.Address   = address;
 }