# Class SSLImplementation

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

Direct Known Subclasses:
  `JSSEImplementation, OpenSSLImplementation`

public abstract class SSLImplementation extends Object
Provides a factory and base implementation for the Tomcat specific mechanism that allows alternative SSL/TLS implementations to be used without requiring the implementation of a full JSSE provider.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SSLImplementation()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static SSLImplementation`
  `getInstance(String className)`
  Obtain an instance (not a singleton) of the implementation with the given class name.
  `abstract SSLSupport`
  `getSSLSupport(SSLSession session)`
  Deprecated.
  This will be removed in Tomcat 10.1.x onwards.
  `SSLSupport`
  `getSSLSupport(SSLSession session, Map<String, List<String>> additionalAttributes)`
  Obtain an instance of SSLSupport.
  `abstract SSLUtil`
  `getSSLUtil(SSLHostConfigCertificate certificate)`
  `abstract boolean`
  `isAlpnSupported()`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### SSLImplementation

    public SSLImplementation()

- ## Method Details

  - ### getInstance

    public static SSLImplementation getInstance(String className) throws ClassNotFoundException
    Obtain an instance (not a singleton) of the implementation with the given class name.
    Parameters:
      `className` - The class name of the required implementation or null to use the default (currently `JSSEImplementation`).
    Returns:
      An instance of the required implementation
    Throws:
      `ClassNotFoundException` - If an instance of the requested class cannot be created

  - ### getSSLSupport

    public SSLSupport getSSLSupport(SSLSession session, Map<String, List<String>> additionalAttributes)
    Obtain an instance of SSLSupport.
    Parameters:
      `session` - The SSL session
      `additionalAttributes` - Additional SSL attributes that are not available from the session.
    Returns:
      An instance of SSLSupport based on the given session and the provided additional attributes

  - ### getSSLSupport

    @Deprecated public abstract SSLSupport getSSLSupport(SSLSession session)
    Deprecated.
    This will be removed in Tomcat 10.1.x onwards. Use `getSSLSupport(SSLSession, Map)`.
    Obtain an instance of SSLSupport.
    Parameters:
      `session` - The TLS session
    Returns:
      An instance of SSLSupport based on the given session.

  - ### getSSLUtil

    public abstract SSLUtil getSSLUtil(SSLHostConfigCertificate certificate)

  - ### isAlpnSupported

    public abstract boolean isAlpnSupported()