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); } }
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 (); } }
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(); } }
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(); } }
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; } } }
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 (); } }
protected virtual void HandleChangeCipherSpec (TlsChangeCipherSpec message) { PendingCrypto.ReadSequenceNumber = 0; SwitchToNewCipher (); }
protected virtual void HandleChangeCipherSpec(TlsChangeCipherSpec message) { PendingCrypto.ReadSequenceNumber = 0; SwitchToNewCipher(); }
protected virtual void HandleChangeCipherSpec (TlsChangeCipherSpec message) { Session.PendingCrypto.ReadSequenceNumber = 0; Session.PendingRead = true; }
protected virtual void HandleChangeCipherSpec(TlsChangeCipherSpec message) { Session.PendingCrypto.ReadSequenceNumber = 0; Session.PendingRead = true; }