<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />

Org.BouncyCastle.Tls.TlsProtocol

public abstract class TlsProtocol : TlsCloseable
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); public virtual int ReadApplicationData(Span<byte> buffer); 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); protected virtual void SafeWriteRecord(short type, ReadOnlySpan<byte> buffer); public virtual void WriteApplicationData(byte[] buffer, int offset, int count); public virtual void WriteApplicationData(ReadOnlySpan<byte> buffer); 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(); } }