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 TlsCipherFactorycipherFactoryprotected short[]clientECPointFormatsprotected TlsClientContextcontextprotected int[]namedCurvesprotected intselectedCipherSuiteprotected shortselectedCompressionMethodprotected short[]serverECPointFormatsprotected java.util.VectorsupportedSignatureAlgorithms
-
Constructor Summary
Constructors Constructor Description AbstractTlsClient()AbstractTlsClient(TlsCipherFactory cipherFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanallowUnexpectedServerExtension(java.lang.Integer extensionType, byte[] extensionData)protected voidcheckForUnexpectedServerExtension(java.util.Hashtable serverExtensions, java.lang.Integer extensionType)TlsCiphergetCipher()java.util.HashtablegetClientExtensions()ProtocolVersiongetClientHelloRecordLayerVersion()Return theProtocolVersionto use for theTLSPlaintext.versionfield prior to receiving the server version.java.util.VectorgetClientSupplementalData()ProtocolVersiongetClientVersion()TlsCompressiongetCompression()short[]getCompressionMethods()ProtocolVersiongetMinimumVersion()TlsSessiongetSessionToResume()Return the session this client wants to resume, if any.voidinit(TlsClientContext context)booleanisFallback()voidnotifyNewSessionTicket(NewSessionTicket newSessionTicket)RFC 5077 3.3.voidnotifySelectedCipherSuite(int selectedCipherSuite)voidnotifySelectedCompressionMethod(short selectedCompressionMethod)voidnotifyServerVersion(ProtocolVersion serverVersion)voidnotifySessionID(byte[] sessionID)Notifies the client of the session_id sent in the ServerHello.voidprocessServerExtensions(java.util.Hashtable serverExtensions)voidprocessServerSupplementalData(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:TlsClientReturn 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:
getSessionToResumein interfaceTlsClient- Returns:
- A
TlsSessionrepresenting 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:TlsClientReturn theProtocolVersionto use for theTLSPlaintext.versionfield 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:
getClientHelloRecordLayerVersionin interfaceTlsClient- Returns:
- The
ProtocolVersionto use.
-
getClientVersion
public ProtocolVersion getClientVersion()
- Specified by:
getClientVersionin interfaceTlsClient
-
isFallback
public boolean isFallback()
- Specified by:
isFallbackin interfaceTlsClient
-
getClientExtensions
public java.util.Hashtable getClientExtensions() throws java.io.IOException- Specified by:
getClientExtensionsin interfaceTlsClient- Throws:
java.io.IOException
-
getMinimumVersion
public ProtocolVersion getMinimumVersion()
-
notifyServerVersion
public void notifyServerVersion(ProtocolVersion serverVersion) throws java.io.IOException
- Specified by:
notifyServerVersionin interfaceTlsClient- Throws:
java.io.IOException
-
getCompressionMethods
public short[] getCompressionMethods()
- Specified by:
getCompressionMethodsin interfaceTlsClient
-
notifySessionID
public void notifySessionID(byte[] sessionID)
Description copied from interface:TlsClientNotifies the client of the session_id sent in the ServerHello.- Specified by:
notifySessionIDin interfaceTlsClient- See Also:
TlsContext.getResumableSession()
-
notifySelectedCipherSuite
public void notifySelectedCipherSuite(int selectedCipherSuite)
- Specified by:
notifySelectedCipherSuitein interfaceTlsClient
-
notifySelectedCompressionMethod
public void notifySelectedCompressionMethod(short selectedCompressionMethod)
- Specified by:
notifySelectedCompressionMethodin interfaceTlsClient
-
processServerExtensions
public void processServerExtensions(java.util.Hashtable serverExtensions) throws java.io.IOException- Specified by:
processServerExtensionsin interfaceTlsClient- Throws:
java.io.IOException
-
processServerSupplementalData
public void processServerSupplementalData(java.util.Vector serverSupplementalData) throws java.io.IOException- Specified by:
processServerSupplementalDatain interfaceTlsClient- Throws:
java.io.IOException
-
getClientSupplementalData
public java.util.Vector getClientSupplementalData() throws java.io.IOException- Specified by:
getClientSupplementalDatain interfaceTlsClient- Throws:
java.io.IOException
-
getCompression
public TlsCompression getCompression() throws java.io.IOException
- Specified by:
getCompressionin 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:TlsClientRFC 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:
notifyNewSessionTicketin interfaceTlsClient- Parameters:
newSessionTicket- The ticket.- Throws:
java.io.IOException
-
-