## Uses of Interface
java.security.Key

- Packages that use Key
  Package | Description
  --- | ---
  java.security | Provides the classes and interfaces for the security framework.
  java.security.interfaces | Provides interfaces for generating RSA (Rivest, Shamir and Adleman AsymmetricCipher algorithm) keys as defined in the RSA Laboratory Technical Note PKCS#1, and DSA (Digital Signature Algorithm) keys as defined in NIST's FIPS-186.
  javax.crypto | Provides the classes and interfaces for cryptographic operations.
  javax.crypto.interfaces | Provides interfaces for Diffie-Hellman keys as defined in RSA Laboratories' PKCS #3.
  javax.crypto.spec | Provides classes and interfaces for key specifications and algorithm parameter specifications.
  javax.security.auth.kerberos | This package contains utility classes related to the Kerberos network authentication protocol.
  javax.xml.crypto | Common classes for XML cryptography.
  javax.xml.crypto.dsig.dom | DOM-specific classes for the `javax.xml.crypto.dsig` package.

- - ### Uses of Key in java.security

    Subinterfaces of Key in java.security
    Modifier and Type | Interface | Description
    --- | --- | ---
    `interface` | `PrivateKey` | A private key.
    `interface` | `PublicKey` | A public key.

    Methods in java.security that return Key
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract Key` | KeyStoreSpi.`engineGetKey​(String alias, char[] password)` | Returns the key associated with the given alias, using the given password to recover it.
    `protected abstract Key` | KeyFactorySpi.`engineTranslateKey​(Key key)` | Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this key factory.
    `Key` | KeyStore.`getKey​(String alias, char[] password)` | Returns the key associated with the given alias, using the given password to recover it.
    `Key` | KeyFactory.`translateKey​(Key key)` | Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this key factory.

    Methods in java.security with parameters of type Key
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract <T extends KeySpec> T` | KeyFactorySpi.`engineGetKeySpec​(Key key, Class<T> keySpec)` | Returns a specification (key material) of the given key object.
    `abstract void` | KeyStoreSpi.`engineSetKeyEntry​(String alias, Key key, char[] password, Certificate[] chain)` | Assigns the given key to the given alias, protecting it with the given password.
    `protected abstract Key` | KeyFactorySpi.`engineTranslateKey​(Key key)` | Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this key factory.
    `<T extends KeySpec> T` | KeyFactory.`getKeySpec​(Key key, Class<T> keySpec)` | Returns a specification (key material) of the given key object.
    `boolean` | AlgorithmConstraints.`permits​(Set<CryptoPrimitive> primitives, String algorithm, Key key, AlgorithmParameters parameters)` | Determines whether an algorithm and the corresponding key are granted permission for the specified cryptographic primitives.
    `boolean` | AlgorithmConstraints.`permits​(Set<CryptoPrimitive> primitives, Key key)` | Determines whether a key is granted permission for the specified cryptographic primitives.
    `void` | KeyStore.`setKeyEntry​(String alias, Key key, char[] password, Certificate[] chain)` | Assigns the given key to the given alias, protecting it with the given password.
    `Key` | KeyFactory.`translateKey​(Key key)` | Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this key factory.

  - ### Uses of Key in java.security.interfaces

    Subinterfaces of Key in java.security.interfaces
    Modifier and Type | Interface | Description
    --- | --- | ---
    `interface` | `DSAPrivateKey` | The standard interface to a DSA private key.
    `interface` | `DSAPublicKey` | The interface to a DSA public key.
    `interface` | `ECPrivateKey` | The interface to an elliptic curve (EC) private key.
    `interface` | `ECPublicKey` | The interface to an elliptic curve (EC) public key.
    `interface` | `RSAMultiPrimePrivateCrtKey` | The interface to an RSA multi-prime private key, as defined in the PKCS#1 v2.1, using the Chinese Remainder Theorem (CRT) information values.
    `interface` | `RSAPrivateCrtKey` | The interface to an RSA private key, as defined in the PKCS#1 standard, using the Chinese Remainder Theorem (CRT) information values.
    `interface` | `RSAPrivateKey` | The interface to an RSA private key.
    `interface` | `RSAPublicKey` | The interface to an RSA public key.

  - ### Uses of Key in javax.crypto

    Subinterfaces of Key in javax.crypto
    Modifier and Type | Interface | Description
    --- | --- | ---
    `interface` | `SecretKey` | A secret (symmetric) key.

    Methods in javax.crypto that return Key
    Modifier and Type | Method | Description
    --- | --- | ---
    `Key` | KeyAgreement.`doPhase​(Key key, boolean lastPhase)` | Executes the next phase of this key agreement with the given key that was received from one of the other parties involved in this key agreement.
    `protected abstract Key` | KeyAgreementSpi.`engineDoPhase​(Key key, boolean lastPhase)` | Executes the next phase of this key agreement with the given key that was received from one of the other parties involved in this key agreement.
    `protected Key` | CipherSpi.`engineUnwrap​(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)` | Unwrap a previously wrapped key.
    `Key` | Cipher.`unwrap​(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)` | Unwrap a previously wrapped key.

    Methods in javax.crypto with parameters of type Key
    Modifier and Type | Method | Description
    --- | --- | ---
    `Key` | KeyAgreement.`doPhase​(Key key, boolean lastPhase)` | Executes the next phase of this key agreement with the given key that was received from one of the other parties involved in this key agreement.
    `protected abstract Key` | KeyAgreementSpi.`engineDoPhase​(Key key, boolean lastPhase)` | Executes the next phase of this key agreement with the given key that was received from one of the other parties involved in this key agreement.
    `protected int` | CipherSpi.`engineGetKeySize​(Key key)` | Returns the key size of the given key object in bits.
    `protected abstract void` | CipherSpi.`engineInit​(int opmode, Key key, AlgorithmParameters params, SecureRandom random)` | Initializes this cipher with a key, a set of algorithm parameters, and a source of randomness.
    `protected abstract void` | CipherSpi.`engineInit​(int opmode, Key key, SecureRandom random)` | Initializes this cipher with a key and a source of randomness.
    `protected abstract void` | CipherSpi.`engineInit​(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)` | Initializes this cipher with a key, a set of algorithm parameters, and a source of randomness.
    `protected abstract void` | ExemptionMechanismSpi.`engineInit​(Key key)` | Initializes this exemption mechanism with a key.
    `protected abstract void` | ExemptionMechanismSpi.`engineInit​(Key key, AlgorithmParameters params)` | Initializes this exemption mechanism with a key and a set of algorithm parameters.
    `protected abstract void` | ExemptionMechanismSpi.`engineInit​(Key key, AlgorithmParameterSpec params)` | Initializes this exemption mechanism with a key and a set of algorithm parameters.
    `protected abstract void` | KeyAgreementSpi.`engineInit​(Key key, SecureRandom random)` | Initializes this key agreement with the given key and source of randomness.
    `protected abstract void` | KeyAgreementSpi.`engineInit​(Key key, AlgorithmParameterSpec params, SecureRandom random)` | Initializes this key agreement with the given key, set of algorithm parameters, and source of randomness.
    `protected abstract void` | MacSpi.`engineInit​(Key key, AlgorithmParameterSpec params)` | Initializes the MAC with the given (secret) key and algorithm parameters.
    `protected byte[]` | CipherSpi.`engineWrap​(Key key)` | Wrap a key.
    `PKCS8EncodedKeySpec` | EncryptedPrivateKeyInfo.`getKeySpec​(Key decryptKey)` | Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.
    `PKCS8EncodedKeySpec` | EncryptedPrivateKeyInfo.`getKeySpec​(Key decryptKey, String providerName)` | Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.
    `PKCS8EncodedKeySpec` | EncryptedPrivateKeyInfo.`getKeySpec​(Key decryptKey, Provider provider)` | Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.
    `Object` | SealedObject.`getObject​(Key key)` | Retrieves the original (encapsulated) object.
    `Object` | SealedObject.`getObject​(Key key, String provider)` | Retrieves the original (encapsulated) object.
    `void` | Cipher.`init​(int opmode, Key key)` | Initializes this cipher with a key.
    `void` | Cipher.`init​(int opmode, Key key, AlgorithmParameters params)` | Initializes this cipher with a key and a set of algorithm parameters.
    `void` | Cipher.`init​(int opmode, Key key, AlgorithmParameters params, SecureRandom random)` | Initializes this cipher with a key, a set of algorithm parameters, and a source of randomness.
    `void` | Cipher.`init​(int opmode, Key key, SecureRandom random)` | Initializes this cipher with a key and a source of randomness.
    `void` | Cipher.`init​(int opmode, Key key, AlgorithmParameterSpec params)` | Initializes this cipher with a key and a set of algorithm parameters.
    `void` | Cipher.`init​(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)` | Initializes this cipher with a key, a set of algorithm parameters, and a source of randomness.
    `void` | ExemptionMechanism.`init​(Key key)` | Initializes this exemption mechanism with a key.
    `void` | ExemptionMechanism.`init​(Key key, AlgorithmParameters params)` | Initializes this exemption mechanism with a key and a set of algorithm parameters.
    `void` | ExemptionMechanism.`init​(Key key, AlgorithmParameterSpec params)` | Initializes this exemption mechanism with a key and a set of algorithm parameters.
    `void` | KeyAgreement.`init​(Key key)` | Initializes this key agreement with the given key, which is required to contain all the algorithm parameters required for this key agreement.
    `void` | KeyAgreement.`init​(Key key, SecureRandom random)` | Initializes this key agreement with the given key and source of randomness.
    `void` | KeyAgreement.`init​(Key key, AlgorithmParameterSpec params)` | Initializes this key agreement with the given key and set of algorithm parameters.
    `void` | KeyAgreement.`init​(Key key, AlgorithmParameterSpec params, SecureRandom random)` | Initializes this key agreement with the given key, set of algorithm parameters, and source of randomness.
    `void` | Mac.`init​(Key key)` | Initializes this `Mac` object with the given key.
    `void` | Mac.`init​(Key key, AlgorithmParameterSpec params)` | Initializes this `Mac` object with the given key and algorithm parameters.
    `boolean` | ExemptionMechanism.`isCryptoAllowed​(Key key)` | Returns whether the result blob has been generated successfully by this exemption mechanism.
    `byte[]` | Cipher.`wrap​(Key key)` | Wrap a key.

  - ### Uses of Key in javax.crypto.interfaces

    Subinterfaces of Key in javax.crypto.interfaces
    Modifier and Type | Interface | Description
    --- | --- | ---
    `interface` | `DHPrivateKey` | The interface to a Diffie-Hellman private key.
    `interface` | `DHPublicKey` | The interface to a Diffie-Hellman public key.
    `interface` | `PBEKey` | The interface to a PBE key.

  - ### Uses of Key in javax.crypto.spec

    Classes in javax.crypto.spec that implement Key
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `SecretKeySpec` | This class specifies a secret key in a provider-independent fashion.

  - ### Uses of Key in javax.security.auth.kerberos

    Classes in javax.security.auth.kerberos that implement Key
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `EncryptionKey` | This class encapsulates an EncryptionKey used in Kerberos.
    `class` | `KerberosKey` | This class encapsulates a long term secret key for a Kerberos principal.

  - ### Uses of Key in javax.xml.crypto

    Methods in javax.xml.crypto that return Key
    Modifier and Type | Method | Description
    --- | --- | ---
    `Key` | KeySelectorResult.`getKey​()` | Returns the selected key.

    Methods in javax.xml.crypto with parameters of type Key
    Modifier and Type | Method | Description
    --- | --- | ---
    `static KeySelector` | KeySelector.`singletonKeySelector​(Key key)` | Returns a `KeySelector` that always selects the specified key, regardless of the `KeyInfo` passed to it.

  - ### Uses of Key in javax.xml.crypto.dsig.dom

    Constructors in javax.xml.crypto.dsig.dom with parameters of type Key
    Constructor | Description
    --- | ---
    `DOMSignContext​(Key signingKey, Node parent)` | Creates a `DOMSignContext` with the specified signing key and parent node.
    `DOMSignContext​(Key signingKey, Node parent, Node nextSibling)` | Creates a `DOMSignContext` with the specified signing key, parent and next sibling nodes.
    `DOMValidateContext​(Key validatingKey, Node node)` | Creates a `DOMValidateContext` containing the specified key and node.