# X509KeyManager

public interface **X509KeyManager** implements [KeyManager](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/KeyManager.html) Instances of this interface manage which X509 certificate-based
key pairs are used to authenticate the local side of a secure
socket.


During secure socket negotiations, implentations
call methods in this interface to:

- determine the set of aliases that are available for negotiations based on the criteria presented,
- select the * best alias* based on the criteria presented, and
- obtain the corresponding key material for given aliases.


Note: the X509ExtendedKeyManager should be used in favor of this
class.

### Public Method Summary

|---|---|
| abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [chooseClientAlias](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509KeyManager.html#chooseClientAlias(java.lang.String[],%20java.security.Principal[],%20java.net.Socket))([String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers, [Socket](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/Socket.html) socket) Choose an alias to authenticate the client side of a secure socket given the public key type and the list of certificate issuer authorities recognized by the peer (if any). |
| abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [chooseServerAlias](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509KeyManager.html#chooseServerAlias(java.lang.String,%20java.security.Principal[],%20java.net.Socket))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers, [Socket](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/Socket.html) socket) Choose an alias to authenticate the server side of a secure socket given the public key type and the list of certificate issuer authorities recognized by the peer (if any). |
| abstract [X509Certificate\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/cert/X509Certificate.html) | [getCertificateChain](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509KeyManager.html#getCertificateChain(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) alias) Returns the certificate chain associated with the given alias. |
| abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getClientAliases](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509KeyManager.html#getClientAliases(java.lang.String,%20java.security.Principal[]))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers) Get the matching aliases for authenticating the client side of a secure socket given the public key type and the list of certificate issuer authorities recognized by the peer (if any). |
| abstract [PrivateKey](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/PrivateKey.html) | [getPrivateKey](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509KeyManager.html#getPrivateKey(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) alias) Returns the key associated with the given alias. |
| abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getServerAliases](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509KeyManager.html#getServerAliases(java.lang.String,%20java.security.Principal[]))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers) Get the matching aliases for authenticating the server side of a secure socket given the public key type and the list of certificate issuer authorities recognized by the peer (if any). |

## Public Methods

#### public abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**chooseClientAlias**
([String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers, [Socket](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/Socket.html) socket)

Choose an alias to authenticate the client side of a secure
socket given the public key type and the list of
certificate issuer authorities recognized by the peer (if any).

##### Parameters

| keyType | the key algorithm type name(s), ordered with the most-preferred key type first. |
| issuers | the list of acceptable CA issuer subject names or null if it does not matter which issuers are used. |
| socket | the socket to be used for this connection. This parameter can be null, which indicates that implementations are free to select an alias applicable to any socket. |
|---|---|

##### Returns

- the alias name for the desired key, or null if there are no matches.

#### public abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**chooseServerAlias**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers, [Socket](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/Socket.html) socket)

Choose an alias to authenticate the server side of a secure
socket given the public key type and the list of
certificate issuer authorities recognized by the peer (if any).

##### Parameters

| keyType | the key algorithm type name. |
| issuers | the list of acceptable CA issuer subject names or null if it does not matter which issuers are used. |
| socket | the socket to be used for this connection. This parameter can be null, which indicates that implementations are free to select an alias applicable to any socket. |
|---|---|

##### Returns

- the alias name for the desired key, or null if there are no matches.

#### public abstract [X509Certificate\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/cert/X509Certificate.html)
**getCertificateChain**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) alias)

Returns the certificate chain associated with the given alias.

##### Parameters

| alias | the alias name |
|---|---|

##### Returns

- the certificate chain (ordered with the user's certificate first and the root certificate authority last), or null if the alias can't be found.

#### public abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**getClientAliases**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers)

Get the matching aliases for authenticating the client side of a secure
socket given the public key type and the list of
certificate issuer authorities recognized by the peer (if any).

##### Parameters

| keyType | the key algorithm type name |
| issuers | the list of acceptable CA issuer subject names, or null if it does not matter which issuers are used. |
|---|---|

##### Returns

- an array of the matching alias names, or null if there were no matches.

#### public abstract [PrivateKey](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/PrivateKey.html)
**getPrivateKey**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) alias)

Returns the key associated with the given alias.

##### Parameters

| alias | the alias name |
|---|---|

##### Returns

- the requested key, or null if the alias can't be found.

#### public abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**getServerAliases**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) keyType, [Principal\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) issuers)

Get the matching aliases for authenticating the server side of a secure
socket given the public key type and the list of
certificate issuer authorities recognized by the peer (if any).

##### Parameters

| keyType | the key algorithm type name |
| issuers | the list of acceptable CA issuer subject names or null if it does not matter which issuers are used. |
|---|---|

##### Returns

- an array of the matching alias names, or null if there were no matches.