Package org.bouncycastle.crypto.tls
Class AbstractTlsClient
- java.lang.Object
-
- org.bouncycastle.crypto.tls.AbstractTlsPeer
-
- org.bouncycastle.crypto.tls.AbstractTlsClient
-
- Direct Known Subclasses:
DefaultTlsClient
,PSKTlsClient
,SRPTlsClient
public abstract class AbstractTlsClient extends AbstractTlsPeer implements TlsClient
-
-
Field Summary
Fields Modifier and Type Field Description protected TlsCipherFactory
cipherFactory
protected short[]
clientECPointFormats
protected TlsClientContext
context
protected int[]
namedCurves
protected int
selectedCipherSuite
protected short
selectedCompressionMethod
protected short[]
serverECPointFormats
protected java.util.Vector
supportedSignatureAlgorithms
-
Constructor Summary
Constructors Constructor Description AbstractTlsClient()
AbstractTlsClient(TlsCipherFactory cipherFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
allowUnexpectedServerExtension(java.lang.Integer extensionType, byte[] extensionData)
protected void
checkForUnexpectedServerExtension(java.util.Hashtable serverExtensions, java.lang.Integer extensionType)
TlsCipher
getCipher()
java.util.Hashtable
getClientExtensions()
ProtocolVersion
getClientHelloRecordLayerVersion()
Return theProtocolVersion
to use for theTLSPlaintext.version
field prior to receiving the server version.java.util.Vector
getClientSupplementalData()
ProtocolVersion
getClientVersion()
TlsCompression
getCompression()
short[]
getCompressionMethods()
ProtocolVersion
getMinimumVersion()
TlsSession
getSessionToResume()
Return the session this client wants to resume, if any.void
init(TlsClientContext context)
boolean
isFallback()
void
notifyNewSessionTicket(NewSessionTicket newSessionTicket)
RFC 5077 3.3.void
notifySelectedCipherSuite(int selectedCipherSuite)
void
notifySelectedCompressionMethod(short selectedCompressionMethod)
void
notifyServerVersion(ProtocolVersion serverVersion)
void
notifySessionID(byte[] sessionID)
Notifies the client of the session_id sent in the ServerHello.void
processServerExtensions(java.util.Hashtable serverExtensions)
void
processServerSupplementalData(java.util.Vector serverSupplementalData)
-
Methods inherited from class org.bouncycastle.crypto.tls.AbstractTlsPeer
notifyAlertRaised, notifyAlertReceived, notifyHandshakeComplete, notifySecureRenegotiation, requiresExtendedMasterSecret, shouldUseGMTUnixTime
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.bouncycastle.crypto.tls.TlsClient
getAuthentication, getCipherSuites, getKeyExchange
-
Methods inherited from interface org.bouncycastle.crypto.tls.TlsPeer
notifyAlertRaised, notifyAlertReceived, notifyHandshakeComplete, notifySecureRenegotiation, requiresExtendedMasterSecret, shouldUseGMTUnixTime
-
-
-
-
Field Detail
-
cipherFactory
protected TlsCipherFactory cipherFactory
-
context
protected TlsClientContext context
-
supportedSignatureAlgorithms
protected java.util.Vector supportedSignatureAlgorithms
-
namedCurves
protected int[] namedCurves
-
clientECPointFormats
protected short[] clientECPointFormats
-
serverECPointFormats
protected short[] serverECPointFormats
-
selectedCipherSuite
protected int selectedCipherSuite
-
selectedCompressionMethod
protected short selectedCompressionMethod
-
-
Constructor Detail
-
AbstractTlsClient
public AbstractTlsClient()
-
AbstractTlsClient
public AbstractTlsClient(TlsCipherFactory cipherFactory)
-
-
Method Detail
-
allowUnexpectedServerExtension
protected boolean allowUnexpectedServerExtension(java.lang.Integer extensionType, byte[] extensionData) throws java.io.IOException
- Throws:
java.io.IOException
-
checkForUnexpectedServerExtension
protected void checkForUnexpectedServerExtension(java.util.Hashtable serverExtensions, java.lang.Integer extensionType) throws java.io.IOException
- Throws:
java.io.IOException
-
init
public void init(TlsClientContext context)
-
getSessionToResume
public TlsSession getSessionToResume()
Description copied from interface:TlsClient
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.- Specified by:
getSessionToResume
in interfaceTlsClient
- Returns:
- A
TlsSession
representing the resumable session to be used for this connection, or null to use a new session. - See Also:
SessionParameters.getPeerCertificate()
-
getClientHelloRecordLayerVersion
public ProtocolVersion getClientHelloRecordLayerVersion()
Description copied from interface:TlsClient
Return theProtocolVersion
to use for theTLSPlaintext.version
field prior to receiving the server version. NOTE: This method is not called for DTLS.See RFC 5246 E.1.: "TLS clients that wish to negotiate with older servers MAY send any value {03,XX} as the record layer version number. Typical values would be {03,00}, the lowest version number supported by the client, and the value of ClientHello.client_version. No single value will guarantee interoperability with all old servers, but this is a complex topic beyond the scope of this document."
- Specified by:
getClientHelloRecordLayerVersion
in interfaceTlsClient
- Returns:
- The
ProtocolVersion
to use.
-
getClientVersion
public ProtocolVersion getClientVersion()
- Specified by:
getClientVersion
in interfaceTlsClient
-
isFallback
public boolean isFallback()
- Specified by:
isFallback
in interfaceTlsClient
-
getClientExtensions
public java.util.Hashtable getClientExtensions() throws java.io.IOException
- Specified by:
getClientExtensions
in interfaceTlsClient
- Throws:
java.io.IOException
-
getMinimumVersion
public ProtocolVersion getMinimumVersion()
-
notifyServerVersion
public void notifyServerVersion(ProtocolVersion serverVersion) throws java.io.IOException
- Specified by:
notifyServerVersion
in interfaceTlsClient
- Throws:
java.io.IOException
-
getCompressionMethods
public short[] getCompressionMethods()
- Specified by:
getCompressionMethods
in interfaceTlsClient
-
notifySessionID
public void notifySessionID(byte[] sessionID)
Description copied from interface:TlsClient
Notifies the client of the session_id sent in the ServerHello.- Specified by:
notifySessionID
in interfaceTlsClient
- See Also:
TlsContext.getResumableSession()
-
notifySelectedCipherSuite
public void notifySelectedCipherSuite(int selectedCipherSuite)
- Specified by:
notifySelectedCipherSuite
in interfaceTlsClient
-
notifySelectedCompressionMethod
public void notifySelectedCompressionMethod(short selectedCompressionMethod)
- Specified by:
notifySelectedCompressionMethod
in interfaceTlsClient
-
processServerExtensions
public void processServerExtensions(java.util.Hashtable serverExtensions) throws java.io.IOException
- Specified by:
processServerExtensions
in interfaceTlsClient
- Throws:
java.io.IOException
-
processServerSupplementalData
public void processServerSupplementalData(java.util.Vector serverSupplementalData) throws java.io.IOException
- Specified by:
processServerSupplementalData
in interfaceTlsClient
- Throws:
java.io.IOException
-
getClientSupplementalData
public java.util.Vector getClientSupplementalData() throws java.io.IOException
- Specified by:
getClientSupplementalData
in interfaceTlsClient
- Throws:
java.io.IOException
-
getCompression
public TlsCompression getCompression() throws java.io.IOException
- Specified by:
getCompression
in interfaceTlsPeer
- Throws:
java.io.IOException
-
getCipher
public TlsCipher getCipher() throws java.io.IOException
-
notifyNewSessionTicket
public void notifyNewSessionTicket(NewSessionTicket newSessionTicket) throws java.io.IOException
Description copied from interface:TlsClient
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.
- Specified by:
notifyNewSessionTicket
in interfaceTlsClient
- Parameters:
newSessionTicket
- The ticket.- Throws:
java.io.IOException
-
-