# Class OpenSSLContext

java.lang.Object
org.apache.tomcat.util.net.openssl.OpenSSLContext

All Implemented Interfaces:
  `SSLContext`

public class OpenSSLContext extends Object implements SSLContext
OpenSSL implementation of the SSL context.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final long`
  `cctx`
  `protected final long`
  `ctx`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `OpenSSLContext(SSLHostConfigCertificate certificate, List<String> negotiableProtocols)`
  Constructs an OpenSSLContext for the given certificate and protocols.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addCertificate(SSLHostConfigCertificate certificate)`
  Adds a certificate to this SSL context.
  `protected static boolean`
  `applyConf(OpenSSLConf conf, long cctx, long ctx)`
  Applies the OpenSSL configuration commands to the given context.
  `protected static boolean`
  `checkConf(OpenSSLConf conf, long cctx)`
  Checks the OpenSSL configuration commands against the given context.
  `SSLEngine`
  `createSSLEngine()`
  Creates a new SSL engine.
  `void`
  `destroy()`
  Destroys this SSL context and releases any associated resources.
  `protected void`
  `finalize()`
  `X509Certificate[]`
  `getAcceptedIssuers()`
  Returns the accepted issuers.
  `X509Certificate[]`
  `getCertificateChain(String alias)`
  Returns the certificate chain for the given alias.
  `String`
  `getEnabledProtocol()`
  Returns the currently enabled SSL/TLS protocol.
  `SSLSessionContext`
  `getServerSessionContext()`
  Returns the server session context.
  `SSLServerSocketFactory`
  `getServerSocketFactory()`
  Returns the server socket factory.
  `SSLParameters`
  `getSupportedSSLParameters()`
  Returns the supported SSL parameters.
  `void`
  `init(KeyManager[] kms, TrustManager[] tms, SecureRandom sr)`
  Setup the SSL_CTX.
  `void`
  `setEnabledProtocol(String protocol)`
  Sets the enabled SSL/TLS protocol.

  ### Methods inherited from class Object

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

- ## Field Details

  - ### cctx

    protected final long cctx

  - ### ctx

    protected final long ctx

- ## Constructor Details

  - ### OpenSSLContext

    public OpenSSLContext(SSLHostConfigCertificate certificate, List<String> negotiableProtocols) throws SSLException
    Constructs an OpenSSLContext for the given certificate and protocols.
    Parameters:
      `certificate` - The SSL host config certificate
      `negotiableProtocols` - The list of negotiable protocols
    Throws:
      `SSLException` - if initialization fails

- ## Method Details

  - ### getEnabledProtocol

    public String getEnabledProtocol()
    Returns the currently enabled SSL/TLS protocol.
    Returns:
      The enabled protocol

  - ### setEnabledProtocol

    public void setEnabledProtocol(String protocol)
    Sets the enabled SSL/TLS protocol.
    Parameters:
      `protocol` - The protocol to enable, or null for the default

  - ### destroy

    public void destroy()
    Description copied from interface: `SSLContext`
    Destroys this SSL context and releases any associated resources.
    Specified by:
      `destroy` in interface `SSLContext`

  - ### checkConf

    protected static boolean checkConf(OpenSSLConf conf, long cctx) throws Exception
    Checks the OpenSSL configuration commands against the given context.
    Parameters:
      `conf` - The OpenSSL configuration
      `cctx` - The OpenSSL context
    Returns:
      true if all commands are valid
    Throws:
      `Exception` - if an error occurs

  - ### applyConf

    protected static boolean applyConf(OpenSSLConf conf, long cctx, long ctx) throws Exception
    Applies the OpenSSL configuration commands to the given context.
    Parameters:
      `conf` - The OpenSSL configuration
      `cctx` - The OpenSSL context
      `ctx` - The SSL context
    Returns:
      true if all commands were applied successfully
    Throws:
      `Exception` - if an error occurs

  - ### init

    public void init(KeyManager[] kms, TrustManager[] tms, SecureRandom sr) throws KeyManagementException
    Setup the SSL_CTX.
    Specified by:
      `init` in interface `SSLContext`
    Parameters:
      `kms` - Must contain a KeyManager of the type `OpenSSLKeyManager`
      `tms` - Must contain a TrustManager of the type `X509TrustManager`
      `sr` - Is not used for this implementation.
    Throws:
      `KeyManagementException` - if an error occurs

  - ### addCertificate

    public void addCertificate(SSLHostConfigCertificate certificate) throws Exception
    Adds a certificate to this SSL context.
    Parameters:
      `certificate` - The certificate to add
    Throws:
      `Exception` - if an error occurs

  - ### getServerSessionContext

    public SSLSessionContext getServerSessionContext()
    Description copied from interface: `SSLContext`
    Returns the server session context.
    Specified by:
      `getServerSessionContext` in interface `SSLContext`
    Returns:
      The server session context

  - ### createSSLEngine

    public SSLEngine createSSLEngine()
    Description copied from interface: `SSLContext`
    Creates a new SSL engine.
    Specified by:
      `createSSLEngine` in interface `SSLContext`
    Returns:
      The new SSL engine

  - ### getServerSocketFactory

    public SSLServerSocketFactory getServerSocketFactory()
    Description copied from interface: `SSLContext`
    Returns the server socket factory.
    Specified by:
      `getServerSocketFactory` in interface `SSLContext`
    Returns:
      The server socket factory

  - ### getSupportedSSLParameters

    public SSLParameters getSupportedSSLParameters()
    Description copied from interface: `SSLContext`
    Returns the supported SSL parameters.
    Specified by:
      `getSupportedSSLParameters` in interface `SSLContext`
    Returns:
      The supported SSL parameters

  - ### getCertificateChain

    public X509Certificate[] getCertificateChain(String alias)
    Description copied from interface: `SSLContext`
    Returns the certificate chain for the given alias.
    Specified by:
      `getCertificateChain` in interface `SSLContext`
    Parameters:
      `alias` - The alias
    Returns:
      The certificate chain

  - ### getAcceptedIssuers

    public X509Certificate[] getAcceptedIssuers()
    Description copied from interface: `SSLContext`
    Returns the accepted issuers.
    Specified by:
      `getAcceptedIssuers` in interface `SSLContext`
    Returns:
      The accepted issuers

  - ### finalize

    protected void finalize() throws Throwable
    Overrides:
      `finalize` in class `Object`
    Throws:
      `Throwable`