Ejemplo n.º 1
0
        private void _read()
        {
            _contentType = ((TlsContentType)m_io.ReadU1());
            _version     = new TlsVersion(m_io, this, m_root);
            _length      = m_io.ReadU2be();
            switch (ContentType)
            {
            case TlsContentType.Handshake: {
                __raw_fragment = m_io.ReadBytes(Length);
                var io___raw_fragment = new KaitaiStream(__raw_fragment);
                _fragment = new TlsHandshake(io___raw_fragment, this, m_root);
                break;
            }

            case TlsContentType.ApplicationData: {
                __raw_fragment = m_io.ReadBytes(Length);
                var io___raw_fragment = new KaitaiStream(__raw_fragment);
                _fragment = new TlsApplicationData(io___raw_fragment, this, m_root);
                break;
            }

            case TlsContentType.ChangeCipherSpec: {
                __raw_fragment = m_io.ReadBytes(Length);
                var io___raw_fragment = new KaitaiStream(__raw_fragment);
                _fragment = new TlsChangeCipherSpec(io___raw_fragment, this, m_root);
                break;
            }

            case TlsContentType.Alert: {
                __raw_fragment = m_io.ReadBytes(Length);
                var io___raw_fragment = new KaitaiStream(__raw_fragment);
                _fragment = new TlsEncryptedMessage(io___raw_fragment, this, m_root);
                break;
            }

            default: {
                __raw_fragment = m_io.ReadBytes(Length);
                var io___raw_fragment = new KaitaiStream(__raw_fragment);
                _fragment = new TlsEncryptedMessage(io___raw_fragment, this, m_root);
                break;
            }
            }
            if (ContentType == TlsContentType.ChangeCipherSpec)
            {
                _finished = new TlsFinished(m_io, this, m_root);
            }
        }
Ejemplo n.º 2
0
		protected override MessageStatus HandleMessage (Message message)
		{
			switch (message.Type) {
			case HandshakeType.ChanceCipherSpec:
				changeCipher = (TlsChangeCipherSpec)message;
				HandleChangeCipherSpec (changeCipher);
				return MessageStatus.ContinueNeeded;

			case HandshakeType.Finished:
				finished = (TlsFinished)message;
				HandleFinished (finished);
				return MessageStatus.Finished;

			default:
				throw new InvalidOperationException ();
			}
		}
Ejemplo n.º 3
0
        protected override MessageStatus HandleMessage(Message message)
        {
            switch (message.Type)
            {
            case HandshakeType.Certificate:
                if (!Session.AskedForCertificate)
                {
                    throw new TlsException(AlertDescription.UnexpectedMessage);
                }
                certificate = (TlsCertificate)message;
                HandleCertificate(certificate);
                return(MessageStatus.ContinueNeeded);

            case HandshakeType.ClientKeyExchange:
                if (Settings.RequireClientCertificate && certificate == null)
                {
                    throw new TlsException(AlertDescription.UnexpectedMessage, "Peer did not respond with a certificate.");
                }
                keyExchange = (TlsClientKeyExchange)message;
                HandleClientKeyExchange(keyExchange);
                return(MessageStatus.ContinueNeeded);

            case HandshakeType.ChanceCipherSpec:
                if (Settings.RequireClientCertificate && certificateVerify == null)
                {
                    throw new TlsException(AlertDescription.UnexpectedMessage, "Missing CertificateVerify message.");
                }
                cipherSpec = (TlsChangeCipherSpec)message;
                HandleChangeCipherSpec(cipherSpec);
                return(MessageStatus.ContinueNeeded);

            case HandshakeType.Finished:
                finished = (TlsFinished)message;
                HandleFinished(finished);
                return(MessageStatus.Finished);

            case HandshakeType.CertificateVerify:
                certificateVerify = (TlsCertificateVerify)message;
                HandleCertificateVerify(certificateVerify);
                return(MessageStatus.ContinueNeeded);

            default:
                throw new InvalidOperationException();
            }
        }
Ejemplo n.º 4
0
        protected override MessageStatus HandleMessage(Message message)
        {
            switch (message.Type)
            {
            case HandshakeType.ChanceCipherSpec:
                changeCipher = (TlsChangeCipherSpec)message;
                HandleChangeCipherSpec(changeCipher);
                return(MessageStatus.ContinueNeeded);

            case HandshakeType.Finished:
                finished = (TlsFinished)message;
                HandleFinished(finished);
                return(MessageStatus.Finished);

            default:
                throw new InvalidOperationException();
            }
        }
Ejemplo n.º 5
0
        private void _read()
        {
            _contentType = ((TlsContentType)m_io.ReadU1());
            _version     = m_io.ReadU2be();
            _length      = m_io.ReadU2be();
            switch (ContentType)
            {
            case TlsContentType.Handshake: {
                __raw_record = m_io.ReadBytes(Length);
                var io___raw_record = new KaitaiStream(__raw_record);
                _record = new TlsHandshakeProtocol(io___raw_record, this, m_root);
                break;
            }

            case TlsContentType.ApplicationData: {
                __raw_record = m_io.ReadBytes(Length);
                var io___raw_record = new KaitaiStream(__raw_record);
                _record = new TlsApplicationData(io___raw_record, this, m_root);
                break;
            }

            case TlsContentType.ChangeCipherSpec: {
                __raw_record = m_io.ReadBytes(Length);
                var io___raw_record = new KaitaiStream(__raw_record);
                _record = new TlsChangeCipherSpec(io___raw_record, this, m_root);
                break;
            }

            case TlsContentType.Alert: {
                __raw_record = m_io.ReadBytes(Length);
                var io___raw_record = new KaitaiStream(__raw_record);
                _record = new TlsEncryptedMessage(io___raw_record, this, m_root);
                break;
            }

            default: {
                __raw_record = m_io.ReadBytes(Length);
                var io___raw_record = new KaitaiStream(__raw_record);
                _record = new TlsEncryptedMessage(io___raw_record, this, m_root);
                break;
            }
            }
        }
Ejemplo n.º 6
0
		protected override MessageStatus HandleMessage (Message message)
		{
			switch (message.Type) {
			case HandshakeType.Certificate:
				if (!Session.AskedForCertificate)
					throw new TlsException (AlertDescription.UnexpectedMessage);
				certificate = (TlsCertificate)message;
				HandleCertificate (certificate);
				return MessageStatus.ContinueNeeded;

			case HandshakeType.ClientKeyExchange:
				if (Settings.RequireClientCertificate && certificate == null)
					throw new TlsException (AlertDescription.UnexpectedMessage, "Peer did not respond with a certificate.");
				keyExchange = (TlsClientKeyExchange)message;
				HandleClientKeyExchange (keyExchange);
				return MessageStatus.ContinueNeeded;

			case HandshakeType.ChanceCipherSpec:
				if (Settings.RequireClientCertificate && certificateVerify == null)
					throw new TlsException (AlertDescription.UnexpectedMessage, "Missing CertificateVerify message.");
				cipherSpec = (TlsChangeCipherSpec)message;
				HandleChangeCipherSpec (cipherSpec);
				return MessageStatus.ContinueNeeded;

			case HandshakeType.Finished:
				finished = (TlsFinished)message;
				HandleFinished (finished);
				return MessageStatus.Finished;

			case HandshakeType.CertificateVerify:
				certificateVerify = (TlsCertificateVerify)message;
				HandleCertificateVerify (certificateVerify);
				return MessageStatus.ContinueNeeded;

			default:
				throw new InvalidOperationException ();
			}
		}
Ejemplo n.º 7
0
		protected virtual void HandleChangeCipherSpec (TlsChangeCipherSpec message)
		{
			PendingCrypto.ReadSequenceNumber = 0;
			SwitchToNewCipher ();
		}
Ejemplo n.º 8
0
 protected virtual void HandleChangeCipherSpec(TlsChangeCipherSpec message)
 {
     PendingCrypto.ReadSequenceNumber = 0;
     SwitchToNewCipher();
 }
Ejemplo n.º 9
0
		protected virtual void HandleChangeCipherSpec (TlsChangeCipherSpec message)
		{
			Session.PendingCrypto.ReadSequenceNumber = 0;
			Session.PendingRead = true;
		}
Ejemplo n.º 10
0
 protected virtual void HandleChangeCipherSpec(TlsChangeCipherSpec message)
 {
     Session.PendingCrypto.ReadSequenceNumber = 0;
     Session.PendingRead = true;
 }