Package org.bouncycastle.tls
Class AbstractTlsServer
java.lang.Object
org.bouncycastle.tls.AbstractTlsPeer
org.bouncycastle.tls.AbstractTlsServer
- Direct Known Subclasses:
DefaultTlsServer,PSKTlsServer,SRPTlsServer
Base class for a TLS server.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected CertificateStatusRequestprotected int[]protected Hashtableprotected Vectorprotected booleanprotected TlsServerContextprotected booleanprotected shortprotected int[]protected ProtocolVersion[]protected intprotected ProtocolNameprotected final Hashtableprotected Vectorprotected booleanprotected Vector -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected HashtableDeprecated.Use 'serverExtensions' directly, it is now never nullprotected short[]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.int[]protected StringgetExternalPSK(Vector identities) WARNING: EXPERIMENTAL FEATURE, UNSTABLE API Return theexternal PSKto select from the ClientHello.protected intprotected intprotected byte[]RFC 9146 DTLS connection ID.byte[]RFC 5077 3.3.protected VectorintvoidgetServerExtensionsForConnection(Hashtable serverExtensions) getSessionToResume(byte[] sessionID) Return the specified session, if available.int[]voidinit(TlsServerContext context) protected booleanisSelectableCipherSuite(int cipherSuite, int availCurveBits, int availFiniteFieldBits, Vector sigAlgs) voidnotifyClientCertificate(Certificate clientCertificate) Called by the protocol handler to report the client certificate, only ifTlsServer.getCertificateRequest()returned non-null.voidnotifyClientVersion(ProtocolVersion clientVersion) voidnotifyFallback(boolean isFallback) voidNotifies the peer that a new handshake is about to begin.voidnotifyOfferedCipherSuites(int[] offeredCipherSuites) voidnotifySession(TlsSession session) protected booleanprotected booleanvoidprocessClientExtensions(Hashtable clientExtensions) voidprocessClientSupplementalData(Vector clientSupplementalData) protected booleanselectCipherSuite(int cipherSuite) protected intselectDH(int minimumFiniteFieldBits) protected intselectDHDefault(int minimumFiniteFieldBits) protected intselectECDH(int minimumCurveBits) protected intselectECDHDefault(int minimumCurveBits) protected ProtocolNameprotected ProtocolNameselectProtocolName(Vector clientProtocolNames, Vector serverProtocolNames) protected booleanMethods inherited from class org.bouncycastle.tls.AbstractTlsPeer
allowLegacyResumption, cancel, getCrypto, getHandshakeResendTimeMillis, getHandshakeTimeoutMillis, getHeartbeat, getHeartbeatPolicy, getKeyExchangeFactory, getMaxCertificateChainLength, getMaxHandshakeMessageSize, getPskKeyExchangeModes, getRenegotiationPolicy, getSupportedCipherSuites, getSupportedVersions, notifyAlertRaised, notifyAlertReceived, notifyCloseHandle, notifyConnectionClosed, notifyHandshakeComplete, notifySecureRenegotiation, requiresCloseNotify, requiresExtendedMasterSecret, shouldCheckSigAlgOfPeerCerts, shouldUseExtendedMasterSecret, shouldUseExtendedPadding, shouldUseGMTUnixTimeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.bouncycastle.tls.TlsPeer
allowLegacyResumption, cancel, getCrypto, getHandshakeResendTimeMillis, getHandshakeTimeoutMillis, getHeartbeat, getHeartbeatPolicy, getKeyExchangeFactory, getMaxCertificateChainLength, getMaxHandshakeMessageSize, getPskKeyExchangeModes, getRenegotiationPolicy, notifyAlertRaised, notifyAlertReceived, notifyCloseHandle, notifyConnectionClosed, notifyHandshakeComplete, notifySecureRenegotiation, requiresCloseNotify, requiresExtendedMasterSecret, shouldCheckSigAlgOfPeerCerts, shouldUseExtendedMasterSecret, shouldUseExtendedPadding, shouldUseGMTUnixTimeMethods inherited from interface org.bouncycastle.tls.TlsServer
getCredentials
-
Field Details
-
context
-
protocolVersions
-
cipherSuites
protected int[] cipherSuites -
offeredCipherSuites
protected int[] offeredCipherSuites -
clientExtensions
-
encryptThenMACOffered
protected boolean encryptThenMACOffered -
maxFragmentLengthOffered
protected short maxFragmentLengthOffered -
truncatedHMacOffered
protected boolean truncatedHMacOffered -
clientSentECPointFormats
protected boolean clientSentECPointFormats -
certificateStatusRequest
-
statusRequestV2
-
trustedCAKeys
-
selectedCipherSuite
protected int selectedCipherSuite -
clientProtocolNames
-
selectedProtocolName
-
serverExtensions
-
-
Constructor Details
-
AbstractTlsServer
-
-
Method Details
-
allowCertificateStatus
protected boolean allowCertificateStatus() -
allowEncryptThenMAC
protected boolean allowEncryptThenMAC() -
allowMultiCertStatus
protected boolean allowMultiCertStatus() -
allowTruncatedHMac
protected boolean allowTruncatedHMac() -
allowTrustedCAIndication
protected boolean allowTrustedCAIndication() -
checkServerExtensions
Deprecated.Use 'serverExtensions' directly, it is now never null -
getDetailMessageNoCipherSuite
-
getMaximumNegotiableCurveBits
protected int getMaximumNegotiableCurveBits() -
getMaximumNegotiableFiniteFieldBits
protected int getMaximumNegotiableFiniteFieldBits() -
getProtocolNames
-
isSelectableCipherSuite
protected boolean isSelectableCipherSuite(int cipherSuite, int availCurveBits, int availFiniteFieldBits, Vector sigAlgs) -
preferLocalCipherSuites
protected boolean preferLocalCipherSuites() -
selectCipherSuite
- Throws:
IOException
-
selectDH
protected int selectDH(int minimumFiniteFieldBits) -
selectDHDefault
protected int selectDHDefault(int minimumFiniteFieldBits) -
selectECDH
protected int selectECDH(int minimumCurveBits) -
selectECDHDefault
protected int selectECDHDefault(int minimumCurveBits) -
selectProtocolName
- Throws:
IOException
-
selectProtocolName
-
shouldSelectProtocolNameEarly
protected boolean shouldSelectProtocolNameEarly() -
preferLocalClientCertificateTypes
protected boolean preferLocalClientCertificateTypes() -
getAllowedClientCertificateTypes
protected short[] getAllowedClientCertificateTypes() -
getNewConnectionID
protected byte[] getNewConnectionID()RFC 9146 DTLS connection ID. 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:")- Returns:
- The connection ID to use.
-
init
-
getProtocolVersions
- Specified by:
getProtocolVersionsin interfaceTlsPeer
-
getCipherSuites
public int[] getCipherSuites()- Specified by:
getCipherSuitesin interfaceTlsPeer
-
notifyHandshakeBeginning
Description copied from interface:TlsPeerNotifies the peer that a new handshake is about to begin.- Specified by:
notifyHandshakeBeginningin interfaceTlsPeer- Overrides:
notifyHandshakeBeginningin classAbstractTlsPeer- Throws:
IOException
-
getSessionToResume
Description copied from interface:TlsServerReturn the specified session, if available. Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.- Specified by:
getSessionToResumein interfaceTlsServer- Parameters:
sessionID- the ID of the session to resume.- Returns:
- A
TlsSessionwith the specified session ID, or null. - See Also:
-
getNewSessionID
public byte[] getNewSessionID()- Specified by:
getNewSessionIDin interfaceTlsServer
-
getExternalPSK
Description copied from interface:TlsServerWARNING: EXPERIMENTAL FEATURE, UNSTABLE API Return theexternal PSKto select from the ClientHello. 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.- Specified by:
getExternalPSKin interfaceTlsServer- Parameters:
identities- aVectorofPskIdentityinstances.- Returns:
- the
TlsPSKExternalcorresponding to the selected identity, or null to not select any.
-
notifySession
- Specified by:
notifySessionin interfaceTlsServer
-
notifyClientVersion
- Specified by:
notifyClientVersionin interfaceTlsServer- Throws:
IOException
-
notifyFallback
- Specified by:
notifyFallbackin interfaceTlsServer- Throws:
IOException
-
notifyOfferedCipherSuites
- Specified by:
notifyOfferedCipherSuitesin interfaceTlsServer- Throws:
IOException
-
processClientExtensions
- Specified by:
processClientExtensionsin interfaceTlsServer- Throws:
IOException
-
getServerVersion
- Specified by:
getServerVersionin interfaceTlsServer- Throws:
IOException
-
getSupportedGroups
- Specified by:
getSupportedGroupsin interfaceTlsServer- Throws:
IOException
-
getSelectedCipherSuite
- Specified by:
getSelectedCipherSuitein interfaceTlsServer- Throws:
IOException
-
getServerExtensions
- Specified by:
getServerExtensionsin interfaceTlsServer- Throws:
IOException
-
getServerExtensionsForConnection
- Specified by:
getServerExtensionsForConnectionin interfaceTlsServer- Throws:
IOException
-
getServerSupplementalData
- Specified by:
getServerSupplementalDatain interfaceTlsServer- Throws:
IOException
-
getCertificateStatus
Description copied from interface:TlsServerThis 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-nullCertificateStatusis returned, it is sent to the client as a handshake message of type "certificate_status".- Specified by:
getCertificateStatusin interfaceTlsServer- Returns:
- A
CertificateStatusto be sent to the client (or null for none). - Throws:
IOException
-
getCertificateRequest
- Specified by:
getCertificateRequestin interfaceTlsServer- Throws:
IOException
-
getPSKIdentityManager
- Specified by:
getPSKIdentityManagerin interfaceTlsServer- Throws:
IOException
-
getSRPLoginParameters
- Specified by:
getSRPLoginParametersin interfaceTlsServer- Throws:
IOException
-
getDHConfig
- Specified by:
getDHConfigin interfaceTlsServer- Throws:
IOException
-
getECDHConfig
- Specified by:
getECDHConfigin interfaceTlsServer- Throws:
IOException
-
processClientSupplementalData
- Specified by:
processClientSupplementalDatain interfaceTlsServer- Throws:
IOException
-
notifyClientCertificate
Description copied from interface:TlsServerCalled by the protocol handler to report the client certificate, only ifTlsServer.getCertificateRequest()returned non-null. Note: this method is responsible for certificate verification and validation.- Specified by:
notifyClientCertificatein interfaceTlsServer- Parameters:
clientCertificate- the effective client certificate (may be an empty chain).- Throws:
IOException
-
getNewSessionTicket
Description copied from interface:TlsServerRFC 5077 3.3. NewSessionTicket Handshake Message.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.
- Specified by:
getNewSessionTicketin interfaceTlsServer- Returns:
- The ticket.
- Throws:
IOException
-