# 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`

## Field Summary

Fields
Modifier and Type
Field
Description
`static byte[]`
`USE_TLS_RESPONSE`

## 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()`
`List<String>`
`getClientRequestedCipherNames()`
`List<Cipher>`
`getClientRequestedCiphers()`
`List<String>`
`getClientRequestedProtocols()`
`TLSClientHelloExtractor.ExtractorResult`
`getResult()`
`String`
`getSNIValue()`

### Methods inherited from class java.lang.Object

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

## Field Details

### USE_TLS_RESPONSE

public static byte[] USE_TLS_RESPONSE

## 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()

### getSNIValue

public String getSNIValue()

Returns:
  The SNI value provided by the client converted to lower case if not already lower case.

### getClientRequestedCiphers

public List<Cipher> getClientRequestedCiphers()

### getClientRequestedCipherNames

public List<String> getClientRequestedCipherNames()

### getClientRequestedApplicationProtocols

public List<String> getClientRequestedApplicationProtocols()

### getClientRequestedProtocols

public List<String> getClientRequestedProtocols()