# Class TLSClientHelloExtractor

java.lang.Object
org.apache.tomcat.util.net.TLSClientHelloExtractor

public class TLSClientHelloExtractor extends Object
This class extracts the SNI host name and ALPN protocols from a TLS client-hello message.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `TLSClientHelloExtractor.ExtractorResult`
  Possible results of TLS ClientHello extraction.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static byte[]`
  `USE_TLS_RESPONSE`
  HTTP response sent to clients that connect without TLS when TLS is required.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TLSClientHelloExtractor(ByteBuffer netInBuffer)`
  Creates the instance of the parser and processes the provided buffer.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<String>`
  `getClientRequestedApplicationProtocols()`
  Returns the application-level protocols requested by the client.
  `List<String>`
  `getClientRequestedCipherNames()`
  Returns the names of cipher suites requested by the client.
  `List<Cipher>`
  `getClientRequestedCiphers()`
  Returns the list of cipher suites requested by the client.
  `List<String>`
  `getClientRequestedProtocols()`
  Returns the transport protocols requested by the client.
  `List<SignatureScheme>`
  `getClientSignatureSchemes()`
  Returns the signature schemes requested by the client.
  `List<Group>`
  `getClientSupportedGroups()`
  Returns the key exchange groups supported by the client.
  `TLSClientHelloExtractor.ExtractorResult`
  `getResult()`
  Returns the result of the TLS ClientHello extraction.
  `String`
  `getSNIValue()`
  Returns the SNI value provided by the client.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### USE_TLS_RESPONSE

    public static byte[] USE_TLS_RESPONSE
    HTTP response sent to clients that connect without TLS when TLS is required.

- ## Constructor Details

  - ### TLSClientHelloExtractor

    public TLSClientHelloExtractor(ByteBuffer netInBuffer) throws IOException
    Creates the instance of the parser and processes the provided buffer. The buffer position and limit will be modified during the execution of this method, but they will be returned to the original values before the method exits.
    Parameters:
      `netInBuffer` - The buffer containing the TLS data to process
    Throws:
      `IOException` - If the client hello message is malformed

- ## Method Details

  - ### getResult

    public TLSClientHelloExtractor.ExtractorResult getResult()
    Returns the result of the TLS ClientHello extraction.
    Returns:
      the extraction result

  - ### getSNIValue

    public String getSNIValue()
    Returns the SNI value provided by the client.
    Returns:
      The SNI value provided by the client converted to lower case if not already lower case

  - ### getClientRequestedCiphers

    public List<Cipher> getClientRequestedCiphers()
    Returns the list of cipher suites requested by the client.
    Returns:
      the list of requested cipher suites

  - ### getClientRequestedCipherNames

    public List<String> getClientRequestedCipherNames()
    Returns the names of cipher suites requested by the client.
    Returns:
      the list of cipher suite names

  - ### getClientRequestedApplicationProtocols

    public List<String> getClientRequestedApplicationProtocols()
    Returns the application-level protocols requested by the client.
    Returns:
      the list of requested application protocols

  - ### getClientRequestedProtocols

    public List<String> getClientRequestedProtocols()
    Returns the transport protocols requested by the client.
    Returns:
      the list of requested protocols

  - ### getClientSupportedGroups

    public List<Group> getClientSupportedGroups()
    Returns the key exchange groups supported by the client.
    Returns:
      the list of supported groups

  - ### getClientSignatureSchemes

    public List<SignatureScheme> getClientSignatureSchemes()
    Returns the signature schemes requested by the client.
    Returns:
      the list of signature schemes