Org.BouncyCastle.Tls.TlsProtocol
namespace Org.BouncyCastle.Tls
{
public abstract class TlsProtocol : TlsCloseable
{
protected const short CS_START = 0;
protected const short CS_CLIENT_HELLO = 1;
protected const short CS_SERVER_HELLO_RETRY_REQUEST = 2;
protected const short CS_CLIENT_HELLO_RETRY = 3;
protected const short CS_SERVER_HELLO = 4;
protected const short CS_SERVER_ENCRYPTED_EXTENSIONS = 5;
protected const short CS_SERVER_SUPPLEMENTAL_DATA = 6;
protected const short CS_SERVER_CERTIFICATE = 7;
protected const short CS_SERVER_CERTIFICATE_STATUS = 8;
protected const short CS_SERVER_CERTIFICATE_VERIFY = 9;
protected const short CS_SERVER_KEY_EXCHANGE = 10;
protected const short CS_SERVER_CERTIFICATE_REQUEST = 11;
protected const short CS_SERVER_HELLO_DONE = 12;
protected const short CS_CLIENT_END_OF_EARLY_DATA = 13;
protected const short CS_CLIENT_SUPPLEMENTAL_DATA = 14;
protected const short CS_CLIENT_CERTIFICATE = 15;
protected const short CS_CLIENT_KEY_EXCHANGE = 16;
protected const short CS_CLIENT_CERTIFICATE_VERIFY = 17;
protected const short CS_CLIENT_FINISHED = 18;
protected const short CS_SERVER_SESSION_TICKET = 19;
protected const short CS_SERVER_FINISHED = 20;
protected const short CS_END = 21;
protected const short ADS_MODE_1_Nsub1 = 0;
protected const short ADS_MODE_0_N = 1;
protected const short ADS_MODE_0_N_FIRSTONLY = 2;
protected TlsSession m_tlsSession;
protected SessionParameters m_sessionParameters;
protected TlsSecret m_sessionMasterSecret;
protected byte[] m_retryCookie;
protected int m_retryGroup;
protected IDictionary<int, byte[]> m_clientExtensions;
protected IDictionary<int, byte[]> m_serverExtensions;
protected short m_connectionState;
protected bool m_selectedPsk13;
protected bool m_receivedChangeCipherSpec;
protected bool m_expectSessionTicket;
protected readonly bool m_blocking;
protected readonly ByteQueueInputStream m_inputBuffers;
protected readonly ByteQueueOutputStream m_outputBuffer;
protected abstract TlsContext Context { get; }
protected abstract TlsPeer Peer { get; }
public virtual int ApplicationDataAvailable { get; }
public virtual int AppDataSplitMode { get; set; }
public virtual bool IsResumableHandshake { get; set; }
public virtual Stream Stream { get; }
public virtual int ApplicationDataLimit { get; }
public virtual bool IsClosed { get; }
public virtual bool IsConnected { get; }
public virtual bool IsHandshaking { get; }
protected bool IsLegacyConnectionState();
protected bool IsTlsV13ConnectionState();
protected TlsProtocol();
public TlsProtocol(Stream stream);
public TlsProtocol(Stream input, Stream output);
public virtual void ResumeHandshake();
protected virtual void CloseConnection();
protected virtual void HandleAlertMessage(short alertLevel, short alertDescription);
protected virtual void HandleAlertWarningMessage(short alertDescription);
protected virtual void HandleChangeCipherSpecMessage();
protected virtual void HandleClose(bool user_canceled);
protected virtual void HandleException(short alertDescription, string message, Exception e);
protected virtual void HandleFailure();
protected abstract void HandleHandshakeMessage(short type, HandshakeMessageInput buf);
protected virtual void ApplyMaxFragmentLengthExtension(short maxFragmentLength);
protected virtual void CheckReceivedChangeCipherSpec(bool expected);
protected virtual void BlockForHandshake();
protected virtual void BeginHandshake();
protected virtual void CleanupHandshake();
protected virtual void CompleteHandshake();
public virtual int ReadApplicationData(byte[] buffer, int offset, int count);
protected virtual RecordPreview SafePreviewRecordHeader(byte[] recordHeader);
protected virtual void SafeReadRecord();
protected virtual bool SafeReadFullRecord(byte[] input, int inputOff, int inputLen);
protected virtual void SafeWriteRecord(short type, byte[] buf, int offset, int len);
public virtual void WriteApplicationData(byte[] buffer, int offset, int count);
public virtual void CloseInput();
public virtual RecordPreview PreviewInputRecord(byte[] recordHeader);
public virtual int PreviewOutputRecord();
public virtual RecordPreview PreviewOutputRecord(int applicationDataSize);
public virtual void OfferInput(byte[] input);
public virtual void OfferInput(byte[] input, int inputOff, int inputLen);
public virtual int GetAvailableInputBytes();
public virtual int ReadInput(byte[] buf, int off, int len);
public virtual int GetAvailableOutputBytes();
public virtual int ReadOutput(byte[] buffer, int offset, int length);
protected virtual bool EstablishSession(TlsSession sessionToResume);
protected virtual void CancelSession();
protected virtual void InvalidateSession();
protected virtual void ProcessFinishedMessage(MemoryStream buf);
protected virtual void Process13FinishedMessage(MemoryStream buf);
protected virtual void RaiseAlertFatal(short alertDescription, string message, Exception cause);
protected virtual void RaiseAlertWarning(short alertDescription, string message);
protected virtual void Receive13KeyUpdate(MemoryStream buf);
protected virtual void SendCertificateMessage(Certificate certificate, Stream endPointHash);
protected virtual void Send13CertificateMessage(Certificate certificate);
protected virtual void Send13CertificateVerifyMessage(DigitallySigned certificateVerify);
protected virtual void SendChangeCipherSpec();
protected virtual void SendChangeCipherSpecMessage();
protected virtual void SendFinishedMessage();
protected virtual void Send13FinishedMessage();
protected virtual void Send13KeyUpdate(bool updateRequested);
protected virtual void SendSupplementalDataMessage(IList<SupplementalDataEntry> supplementalData);
public virtual void Close();
public virtual void Flush();
protected virtual short ProcessMaxFragmentLengthExtension(IDictionary<int, byte[]> clientExtensions, IDictionary<int, byte[]> serverExtensions, short alertDescription);
protected virtual void RefuseRenegotiation();
}
}