Bouncy Castle Cryptography 1.50

org.bouncycastle.crypto.tls
Class AbstractTlsClient

java.lang.Object
  extended by org.bouncycastle.crypto.tls.AbstractTlsPeer
      extended by org.bouncycastle.crypto.tls.AbstractTlsClient
All Implemented Interfaces:
TlsClient, TlsPeer
Direct Known Subclasses:
DefaultTlsClient, PSKTlsClient, SRPTlsClient

public abstract class AbstractTlsClient
extends AbstractTlsPeer
implements TlsClient


Field Summary
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
AbstractTlsClient()
           
AbstractTlsClient(TlsCipherFactory cipherFactory)
           
 
Method Summary
 java.util.Hashtable getClientExtensions()
           
 ProtocolVersion getClientHelloRecordLayerVersion()
          RFC 5246 E.1.
 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)
           
 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
 
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
getCipher, notifyAlertRaised, notifyAlertReceived, notifyHandshakeComplete, notifySecureRenegotiation
 

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

init

public void init(TlsClientContext context)
Specified by:
init in interface TlsClient

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 interface TlsClient
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()
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 interface TlsClient

getClientVersion

public ProtocolVersion getClientVersion()
Specified by:
getClientVersion in interface TlsClient

getClientExtensions

public java.util.Hashtable getClientExtensions()
                                        throws java.io.IOException
Specified by:
getClientExtensions in interface TlsClient
Throws:
java.io.IOException

getMinimumVersion

public ProtocolVersion getMinimumVersion()

notifyServerVersion

public void notifyServerVersion(ProtocolVersion serverVersion)
                         throws java.io.IOException
Specified by:
notifyServerVersion in interface TlsClient
Throws:
java.io.IOException

getCompressionMethods

public short[] getCompressionMethods()
Specified by:
getCompressionMethods in interface TlsClient

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 interface TlsClient
See Also:
TlsContext#getResumableSession()}

notifySelectedCipherSuite

public void notifySelectedCipherSuite(int selectedCipherSuite)
Specified by:
notifySelectedCipherSuite in interface TlsClient

notifySelectedCompressionMethod

public void notifySelectedCompressionMethod(short selectedCompressionMethod)
Specified by:
notifySelectedCompressionMethod in interface TlsClient

processServerExtensions

public void processServerExtensions(java.util.Hashtable serverExtensions)
                             throws java.io.IOException
Specified by:
processServerExtensions in interface TlsClient
Throws:
java.io.IOException

processServerSupplementalData

public void processServerSupplementalData(java.util.Vector serverSupplementalData)
                                   throws java.io.IOException
Specified by:
processServerSupplementalData in interface TlsClient
Throws:
java.io.IOException

getClientSupplementalData

public java.util.Vector getClientSupplementalData()
                                           throws java.io.IOException
Specified by:
getClientSupplementalData in interface TlsClient
Throws:
java.io.IOException

getCompression

public TlsCompression getCompression()
                              throws java.io.IOException
Specified by:
getCompression in interface TlsPeer
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 Message

This 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 interface TlsClient
Parameters:
newSessionTicket - The ticket.
Throws:
java.io.IOException

Bouncy Castle Cryptography 1.50