TlsClient (Bouncy Castle Library 1.54 API Specification)
Date: 2015-12-29

org.bouncycastle.crypto.tls

## Interface TlsClient

- All Superinterfaces:
    TlsPeer
  All Known Implementing Classes:
    AbstractTlsClient, DefaultTlsClient, MockDTLSClient, PSKTlsClient, SRPTlsClient

      public interface TlsClient
      extends TlsPeer

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `TlsAuthentication` | `getAuthentication()`
    `int[]` | `getCipherSuites()`
    `java.util.Hashtable` | `getClientExtensions()`
    `ProtocolVersion` | `getClientHelloRecordLayerVersion()` Return the `ProtocolVersion` to use for the TLSPlaintext.version field prior to receiving the server version.
    `java.util.Vector` | `getClientSupplementalData()`
    `ProtocolVersion` | `getClientVersion()`
    `short[]` | `getCompressionMethods()`
    `TlsKeyExchange` | `getKeyExchange()`
    `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 selectedVersion)`
    `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 interface org.bouncycastle.crypto.tls.TlsPeer

      `getCipher, getCompression, notifyAlertRaised, notifyAlertReceived, notifyHandshakeComplete, notifySecureRenegotiation, shouldUseGMTUnixTime`

- - ### Method Detail

    - #### init

          void init(TlsClientContext context)

    - #### 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 `TlsSession` representing the resumable session to be used for this connection, or null to use a new session.
      See Also:
        `SessionParameters.getPeerCertificate()`

    - #### getClientHelloRecordLayerVersion

          ProtocolVersion getClientHelloRecordLayerVersion()

      Return the `ProtocolVersion` to use for the TLSPlaintext.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."

      Returns:
        The `ProtocolVersion` to use.

    - #### getClientVersion

          ProtocolVersion getClientVersion()

    - #### isFallback

          boolean isFallback()

    - #### getCipherSuites

          int[] getCipherSuites()

    - #### getCompressionMethods

          short[] getCompressionMethods()

    - #### getClientExtensions

          java.util.Hashtable getClientExtensions()
                                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### notifyServerVersion

          void notifyServerVersion(ProtocolVersion selectedVersion)
                                   throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### notifySessionID

          void notifySessionID(byte[] sessionID)

      Notifies the client of the session_id sent in the ServerHello.
      Parameters:
        `sessionID` -
      See Also:
        `TlsContext.getResumableSession()`

    - #### notifySelectedCipherSuite

          void notifySelectedCipherSuite(int selectedCipherSuite)

    - #### notifySelectedCompressionMethod

          void notifySelectedCompressionMethod(short selectedCompressionMethod)

    - #### processServerExtensions

          void processServerExtensions(java.util.Hashtable serverExtensions)
                                       throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### processServerSupplementalData

          void processServerSupplementalData(java.util.Vector serverSupplementalData)
                                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getKeyExchange

          TlsKeyExchange getKeyExchange()
                                        throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getAuthentication

          TlsAuthentication getAuthentication()
                                              throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getClientSupplementalData

          java.util.Vector getClientSupplementalData()
                                                     throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### notifyNewSessionTicket

          void notifyNewSessionTicket(NewSessionTicket newSessionTicket)
                                      throws java.io.IOException

      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.

      Parameters:
        `newSessionTicket` - The ticket.
      Throws:
        `java.io.IOException`