# Class JSSEKeyManager

java.lang.Object
javax.net.ssl.X509ExtendedKeyManager
org.apache.tomcat.util.net.jsse.JSSEKeyManager

All Implemented Interfaces:
  `KeyManager, X509KeyManager`

public final class JSSEKeyManager extends X509ExtendedKeyManager
X509KeyManager which allows selection of a specific key pair and certificate chain (identified by their keystore alias name) to be used by the server to authenticate itself to SSL clients.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JSSEKeyManager(X509KeyManager mgr, String serverKeyAlias)`
  Constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket)`
  `String`
  `chooseEngineClientAlias(String[] keyType, Principal[] issuers, SSLEngine engine)`
  `String`
  `chooseEngineServerAlias(String keyType, Principal[] issuers, SSLEngine engine)`
  Returns the server key alias that was provided in the constructor or the result from `X509ExtendedKeyManager.chooseEngineServerAlias(String, Principal[], SSLEngine)` for the delegate if no alias is specified.
  `String`
  `chooseServerAlias(String keyType, Principal[] issuers, Socket socket)`
  Returns the server key alias that was provided in the constructor or the result from `X509KeyManager.chooseServerAlias(String, Principal[], Socket)` for the delegate if no alias is specified.
  `X509Certificate[]`
  `getCertificateChain(String alias)`
  `String[]`
  `getClientAliases(String keyType, Principal[] issuers)`
  `PrivateKey`
  `getPrivateKey(String alias)`
  `String[]`
  `getServerAliases(String keyType, Principal[] issuers)`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### JSSEKeyManager

    public JSSEKeyManager(X509KeyManager mgr, String serverKeyAlias)
    Constructor.
    Parameters:
      `mgr` - The X509KeyManager used as a delegate
      `serverKeyAlias` - The alias name of the server's key pair and supporting certificate chain

- ## Method Details

  - ### chooseServerAlias

    public String chooseServerAlias(String keyType, Principal[] issuers, Socket socket)
    Returns the server key alias that was provided in the constructor or the result from `X509KeyManager.chooseServerAlias(String, Principal[], Socket)` for the delegate if no alias is specified.

  - ### chooseEngineServerAlias

    public String chooseEngineServerAlias(String keyType, Principal[] issuers, SSLEngine engine)
    Returns the server key alias that was provided in the constructor or the result from `X509ExtendedKeyManager.chooseEngineServerAlias(String, Principal[], SSLEngine)` for the delegate if no alias is specified.
    Overrides:
      `chooseEngineServerAlias` in class `X509ExtendedKeyManager`

  - ### chooseClientAlias

    public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket)

  - ### getCertificateChain

    public X509Certificate[] getCertificateChain(String alias)

  - ### getClientAliases

    public String[] getClientAliases(String keyType, Principal[] issuers)

  - ### getServerAliases

    public String[] getServerAliases(String keyType, Principal[] issuers)

  - ### getPrivateKey

    public PrivateKey getPrivateKey(String alias)

  - ### chooseEngineClientAlias

    public String chooseEngineClientAlias(String[] keyType, Principal[] issuers, SSLEngine engine)
    Overrides:
      `chooseEngineClientAlias` in class `X509ExtendedKeyManager`