Package org.bouncycastle.tls
Interface TlsClient
- All Superinterfaces:
TlsPeer
- All Known Implementing Classes:
AbstractTlsClient,DefaultTlsClient,PSKTlsClient,SRPTlsClient
Interface describing a TLS client endpoint.
-
Method Summary
Modifier and TypeMethodDescriptionIf this client is offering TLS 1.3 or higher, this method may be called to determine for which groups a key share should be included in the initial ClientHello.Return theexternal PSKsto offer in the ClientHello.Return the session this client wants to resume, if any.voidinit(TlsClientContext context) booleanvoidnotifyNewSessionTicket(NewSessionTicket newSessionTicket) RFC 5077 3.3.voidnotifySelectedCipherSuite(int selectedCipherSuite) voidnotifySelectedPSK(TlsPSK selectedPSK) voidnotifyServerVersion(ProtocolVersion selectedVersion) voidnotifySessionID(byte[] sessionID) Notifies the client of the session_id sent in the ServerHello.voidnotifySessionToResume(TlsSession session) Notifies the client of the session that will be offered in ClientHello for resumption, if any.voidprocessServerExtensions(Hashtable serverExtensions) The TlsClientProtocol implementation validates that any server extensions received correspond to client extensions sent.voidprocessServerSupplementalData(Vector serverSupplementalData) booleanMethods inherited from interface org.bouncycastle.tls.TlsPeer
allowLegacyResumption, cancel, getCipherSuites, getCrypto, getHandshakeResendTimeMillis, getHandshakeTimeoutMillis, getHeartbeat, getHeartbeatPolicy, getKeyExchangeFactory, getMaxCertificateChainLength, getMaxHandshakeMessageSize, getProtocolVersions, getPskKeyExchangeModes, getRenegotiationPolicy, notifyAlertRaised, notifyAlertReceived, notifyCloseHandle, notifyConnectionClosed, notifyHandshakeBeginning, notifyHandshakeComplete, notifySecureRenegotiation, requiresCloseNotify, requiresExtendedMasterSecret, shouldCheckSigAlgOfPeerCerts, shouldUseExtendedMasterSecret, shouldUseExtendedPadding, shouldUseGMTUnixTime
-
Method Details
-
init
-
getSessionToResume
TlsSession getSessionToResume()Return the session this client wants to resume, if any. Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.- Returns:
- A
TlsSessionrepresenting the resumable session to be used for this connection, or null to use a new session. - See Also:
-
getExternalPSKs
Vector getExternalPSKs()Return theexternal PSKsto offer in the ClientHello. Note that this will only be called when TLS 1.3 or higher is amongst the offered protocol versions.- Returns:
- a
VectorofTlsPSKExternalinstances, or null if none should be offered.
-
isFallback
boolean isFallback() -
getClientExtensions
- Throws:
IOException
-
shouldUseCompatibilityMode
boolean shouldUseCompatibilityMode() -
notifyServerVersion
- Throws:
IOException
-
notifySessionToResume
Notifies the client of the session that will be offered in ClientHello for resumption, if any. This will be either the session returned fromgetSessionToResume()or null if that session was unusable. NOTE: the actual negotiated session_id is notified bynotifySessionID(byte[]).- Parameters:
session- TheTlsSessionrepresenting the resumable session to be offered for this connection, or null if there is none.- See Also:
-
notifySessionID
void notifySessionID(byte[] sessionID) Notifies the client of the session_id sent in the ServerHello.- Parameters:
sessionID-- See Also:
-
notifySelectedCipherSuite
void notifySelectedCipherSuite(int selectedCipherSuite) -
notifySelectedPSK
- Throws:
IOException
-
processServerExtensions
The TlsClientProtocol implementation validates that any server extensions received correspond to client extensions sent. If further processing of the server extensions is needed, it can be done in this callback. NOTE: This is not called for session resumption handshakes.- Parameters:
serverExtensions- (Integer -> byte[])- Throws:
IOException
-
processServerSupplementalData
- Throws:
IOException
-
getPSKIdentity
- Throws:
IOException
-
getSRPIdentity
- Throws:
IOException
-
getDHGroupVerifier
- Throws:
IOException
-
getSRPConfigVerifier
- Throws:
IOException
-
getAuthentication
- Throws:
IOException
-
getClientSupplementalData
- Throws:
IOException
-
notifyNewSessionTicket
RFC 5077 3.3. NewSessionTicket Handshake MessageThis method will be called (only) when a NewSessionTicket handshake message is received. The ticket is opaque to the client and clients MUST NOT examine the ticket under the assumption that it complies with e.g. RFC 5077 4. Recommended Ticket Construction.
- Parameters:
newSessionTicket- The ticket.- Throws:
IOException
-