Class AbstractTlsServer
- Namespace
- Org.BouncyCastle.Tls
- Assembly
- BouncyCastle.Cryptography.dll
Base class for a TLS server.
public abstract class AbstractTlsServer : AbstractTlsPeer, TlsServer, TlsPeer
- Inheritance
-
AbstractTlsServer
- Implements
- Derived
- Inherited Members
Constructors
AbstractTlsServer(TlsCrypto)
public AbstractTlsServer(TlsCrypto crypto)
Parameters
cryptoTlsCrypto
Fields
m_certificateStatusRequest
protected CertificateStatusRequest m_certificateStatusRequest
Field Value
m_cipherSuites
protected int[] m_cipherSuites
Field Value
- int[]
m_clientExtensions
protected IDictionary<int, byte[]> m_clientExtensions
Field Value
- IDictionary<int, byte[]>
m_clientProtocolNames
protected IList<ProtocolName> m_clientProtocolNames
Field Value
m_clientSentECPointFormats
protected bool m_clientSentECPointFormats
Field Value
m_context
protected TlsServerContext m_context
Field Value
m_encryptThenMACOffered
protected bool m_encryptThenMACOffered
Field Value
m_maxFragmentLengthOffered
protected short m_maxFragmentLengthOffered
Field Value
m_offeredCipherSuites
protected int[] m_offeredCipherSuites
Field Value
- int[]
m_protocolVersions
protected ProtocolVersion[] m_protocolVersions
Field Value
m_selectedCipherSuite
protected int m_selectedCipherSuite
Field Value
m_selectedProtocolName
protected ProtocolName m_selectedProtocolName
Field Value
m_serverExtensions
protected readonly IDictionary<int, byte[]> m_serverExtensions
Field Value
- IDictionary<int, byte[]>
m_statusRequestV2
protected IList<CertificateStatusRequestItemV2> m_statusRequestV2
Field Value
m_truncatedHMacOffered
protected bool m_truncatedHMacOffered
Field Value
m_trustedCAKeys
protected IList<TrustedAuthority> m_trustedCAKeys
Field Value
Methods
AllowCertificateStatus()
protected virtual bool AllowCertificateStatus()
Returns
AllowEncryptThenMac()
protected virtual bool AllowEncryptThenMac()
Returns
AllowMultiCertStatus()
protected virtual bool AllowMultiCertStatus()
Returns
AllowTruncatedHmac()
protected virtual bool AllowTruncatedHmac()
Returns
AllowTrustedCAIndication()
protected virtual bool AllowTrustedCAIndication()
Returns
GetAllowedClientCertificateTypes()
protected virtual short[] GetAllowedClientCertificateTypes()
Returns
- short[]
GetCertificateRequest()
public virtual CertificateRequest GetCertificateRequest()
Returns
Exceptions
GetCertificateStatus()
public virtual CertificateStatus GetCertificateStatus()
Returns
- CertificateStatus
A CertificateStatus to be sent to the client (or null for none).
Remarks
This method will be called (only) if the server included an extension of type "status_request" with empty "extension_data" in the extended server hello. See RFC 3546 3.6. Certificate Status Request. If a non-null CertificateStatus is returned, it is sent to the client as a handshake message of type "certificate_status".
Exceptions
GetCipherSuites()
public override int[] GetCipherSuites()
Returns
- int[]
GetCredentials()
Return server credentials to use.
public abstract TlsCredentials GetCredentials()
Returns
- TlsCredentials
a TlsCredentials object or null for anonymous key exchanges.
Remarks
The returned value may be null, or else it MUST implement exactly one of TlsCredentialedAgreement, TlsCredentialedDecryptor, or TlsCredentialedSigner, depending on the key exchange that was negotiated.
Exceptions
GetDHConfig()
public virtual TlsDHConfig GetDHConfig()
Returns
Exceptions
GetDetailMessageNoCipherSuite()
protected virtual string GetDetailMessageNoCipherSuite()
Returns
GetECDHConfig()
public virtual TlsECConfig GetECDHConfig()
Returns
Exceptions
GetExternalPsk(IList<PskIdentity>)
Return the external PSK to select from the ClientHello.
public virtual TlsPskExternal GetExternalPsk(IList<PskIdentity> identities)
Parameters
identitiesIList<PskIdentity>an IList<T> of PskIdentity instances.
Returns
- TlsPskExternal
The TlsPskExternal corresponding to the selected identity, or null to not select any.
Remarks
WARNING: EXPERIMENTAL FEATURE, UNSTABLE API Note that this will only be called when TLS 1.3 or higher is amongst the offered protocol versions, and one or more PSKs are actually offered.
GetMaximumDefaultCurveBits()
protected virtual int GetMaximumDefaultCurveBits()
Returns
GetMaximumDefaultFiniteFieldBits()
protected virtual int GetMaximumDefaultFiniteFieldBits()
Returns
GetMaximumNegotiableCurveBits()
protected virtual int GetMaximumNegotiableCurveBits()
Returns
GetMaximumNegotiableFiniteFieldBits()
protected virtual int GetMaximumNegotiableFiniteFieldBits()
Returns
GetNewConnectionID()
RFC 9146 DTLS connection ID.
protected virtual byte[] GetNewConnectionID()
Returns
- byte[]
The connection ID to use.
Remarks
This method will be called if a connection_id extension was sent by the client. If the return value is non-null, the server will send this connection ID to the client to use in future packets. As future communication doesn't include the connection IDs length, this should either be fixed-length or include the connection ID's length. (see explanation in RFC 9146 4. "cid:")
GetNewSessionID()
public virtual byte[] GetNewSessionID()
Returns
- byte[]
GetNewSessionTicket()
RFC 5077 3.3. NewSessionTicket Handshake Message.
public virtual NewSessionTicket GetNewSessionTicket()
Returns
- NewSessionTicket
The ticket.
Remarks
This method will be called (only) if a NewSessionTicket extension was sent by the server. See RFC 5077 4. Recommended Ticket Construction for recommended format and protection.
Exceptions
GetProtocolNames()
protected virtual IList<ProtocolName> GetProtocolNames()
Returns
GetProtocolVersions()
public override ProtocolVersion[] GetProtocolVersions()
Returns
GetPskIdentityManager()
public virtual TlsPskIdentityManager GetPskIdentityManager()
Returns
Exceptions
GetSelectedCipherSuite()
public virtual int GetSelectedCipherSuite()
Returns
Exceptions
GetServerExtensions()
public virtual IDictionary<int, byte[]> GetServerExtensions()
Returns
- IDictionary<int, byte[]>
(Int32 -> byte[])
Exceptions
GetServerExtensionsForConnection(IDictionary<int, byte[]>)
public virtual void GetServerExtensionsForConnection(IDictionary<int, byte[]> serverExtensions)
Parameters
serverExtensionsIDictionary<int, byte[]>(Int32 -> byte[])
Exceptions
GetServerSupplementalData()
public virtual IList<SupplementalDataEntry> GetServerSupplementalData()
Returns
- IList<SupplementalDataEntry>
(SupplementalDataEntry)
Exceptions
GetServerVersion()
public virtual ProtocolVersion GetServerVersion()
Returns
Exceptions
GetSessionToResume(byte[])
Return the specified session, if available.
public virtual TlsSession GetSessionToResume(byte[] sessionID)
Parameters
sessionIDbyte[]the ID of the session to resume.
Returns
- TlsSession
A TlsSession with the specified session ID, or null.
Remarks
Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.
- See Also
GetSrpLoginParameters()
public virtual TlsSrpLoginParameters GetSrpLoginParameters()
Returns
Exceptions
GetSupportedGroups()
public virtual int[] GetSupportedGroups()
Returns
- int[]
Exceptions
Init(TlsServerContext)
public virtual void Init(TlsServerContext context)
Parameters
contextTlsServerContext
IsSelectableCipherSuite(int, int, int, IList<short>)
protected virtual bool IsSelectableCipherSuite(int cipherSuite, int availCurveBits, int availFiniteFieldBits, IList<short> sigAlgs)
Parameters
Returns
NotifyClientCertificate(Certificate)
Called by the protocol handler to report the client certificate, only if GetCertificateRequest() returned non-null.
public virtual void NotifyClientCertificate(Certificate clientCertificate)
Parameters
clientCertificateCertificatethe effective client certificate (may be an empty chain).
Remarks
Note: this method is responsible for certificate verification and validation.
Exceptions
NotifyClientVersion(ProtocolVersion)
public virtual void NotifyClientVersion(ProtocolVersion clientVersion)
Parameters
clientVersionProtocolVersion
Exceptions
NotifyFallback(bool)
public virtual void NotifyFallback(bool isFallback)
Parameters
isFallbackbool
Exceptions
NotifyHandshakeBeginning()
public override void NotifyHandshakeBeginning()
Exceptions
NotifyOfferedCipherSuites(int[])
public virtual void NotifyOfferedCipherSuites(int[] offeredCipherSuites)
Parameters
offeredCipherSuitesint[]
Exceptions
NotifySession(TlsSession)
public virtual void NotifySession(TlsSession session)
Parameters
sessionTlsSession
PreferLocalCipherSuites()
protected virtual bool PreferLocalCipherSuites()
Returns
PreferLocalClientCertificateTypes()
protected virtual bool PreferLocalClientCertificateTypes()
Returns
ProcessClientExtensions(IDictionary<int, byte[]>)
public virtual void ProcessClientExtensions(IDictionary<int, byte[]> clientExtensions)
Parameters
clientExtensionsIDictionary<int, byte[]>(Int32 -> byte[])
Exceptions
ProcessClientSupplementalData(IList<SupplementalDataEntry>)
public virtual void ProcessClientSupplementalData(IList<SupplementalDataEntry> clientSupplementalData)
Parameters
clientSupplementalDataIList<SupplementalDataEntry>(SupplementalDataEntry)
Exceptions
SelectCipherSuite(int)
protected virtual bool SelectCipherSuite(int cipherSuite)
Parameters
cipherSuiteint
Returns
Exceptions
SelectDH(int)
protected virtual int SelectDH(int minimumFiniteFieldBits)
Parameters
minimumFiniteFieldBitsint
Returns
SelectDHDefault(int)
protected virtual int SelectDHDefault(int minimumFiniteFieldBits)
Parameters
minimumFiniteFieldBitsint
Returns
SelectECDH(int)
protected virtual int SelectECDH(int minimumCurveBits)
Parameters
minimumCurveBitsint
Returns
SelectECDHDefault(int)
protected virtual int SelectECDHDefault(int minimumCurveBits)
Parameters
minimumCurveBitsint
Returns
SelectProtocolName()
protected virtual ProtocolName SelectProtocolName()
Returns
SelectProtocolName(IList<ProtocolName>, IList<ProtocolName>)
protected virtual ProtocolName SelectProtocolName(IList<ProtocolName> clientProtocolNames, IList<ProtocolName> serverProtocolNames)
Parameters
clientProtocolNamesIList<ProtocolName>serverProtocolNamesIList<ProtocolName>
Returns
ShouldSelectProtocolNameEarly()
protected virtual bool ShouldSelectProtocolNameEarly()