KeySelector (Java SE 23 & JDK 23)
Description: declaration: module: java.xml.crypto, package: javax.xml.crypto, class: KeySelector
Keywords: javax.xml.crypto.KeySelector class

# Class KeySelector

java.lang.Object
javax.xml.crypto.KeySelector

public abstract class KeySelector extends Object
A selector that finds and returns a key using the data contained in a `KeyInfo` object. An example of an implementation of this class is one that searches a `KeyStore` for trusted keys that match information contained in a `KeyInfo`.

Whether or not the returned key is trusted and the mechanisms used to determine that is implementation-specific.

Since:
  1.6

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `KeySelector.Purpose`
  The purpose of the key that is to be selected.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `KeySelector()`
  Default no-args constructor; intended for invocation by subclasses only.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract KeySelectorResult`
  `select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context)`
  Attempts to find a key that satisfies the specified constraints.
  `static KeySelector`
  `singletonKeySelector(Key key)`
  Returns a `KeySelector` that always selects the specified key, regardless of the `KeyInfo` passed to it.

  ### Methods declared in class java.lang.Object

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

- ## Constructor Details

  - ### KeySelector

    protected KeySelector()
    Default no-args constructor; intended for invocation by subclasses only.

- ## Method Details

  - ### select

    public abstract KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException
    Attempts to find a key that satisfies the specified constraints.
    Parameters:
      `keyInfo` - a `KeyInfo` (may be `null`)
      `purpose` - the key's purpose (`KeySelector.Purpose.SIGN`, `KeySelector.Purpose.VERIFY`, `KeySelector.Purpose.ENCRYPT`, or `KeySelector.Purpose.DECRYPT`)
      `method` - the algorithm method that this key is to be used for. Only keys that are compatible with the algorithm and meet the constraints of the specified algorithm should be returned.
      `context` - an `XMLCryptoContext` that may contain useful information for finding an appropriate key. If this key selector supports resolving `RetrievalMethod` types, the context's `baseURI` and `dereferencer` parameters (if specified) should be used by the selector to resolve and dereference the URI.
    Returns:
      the result of the key selector
    Throws:
      `KeySelectorException` - if an exceptional condition occurs while attempting to find a key. Note that an inability to find a key is not considered an exception (`null` should be returned in that case). However, an error condition (ex: network communications failure) that prevented the `KeySelector` from finding a potential key should be considered an exception.
      `ClassCastException` - if the data type of `method` is not supported by this key selector

  - ### singletonKeySelector

    public static KeySelector singletonKeySelector(Key key)
    Returns a `KeySelector` that always selects the specified key, regardless of the `KeyInfo` passed to it.
    Parameters:
      `key` - the sole key to be stored in the key selector
    Returns:
      a key selector that always selects the specified key
    Throws:
      `NullPointerException` - if `key` is `null`