Module java.base
Package javax.crypto

## Class KeyGeneratorSpi

- java.lang.Object
- - javax.crypto.KeyGeneratorSpi

    public abstract class KeyGeneratorSpi
    extends Object

This class defines the Service Provider Interface (SPI) for the `KeyGenerator` class. All the abstract methods in this class must be implemented by each cryptographic service provider who wishes to supply the implementation of a key generator for a particular algorithm.

Since:
  1.4
See Also:
  `SecretKey`

### Constructor Summary

Constructors
Constructor and Description
`KeyGeneratorSpi()`

### Method Summary

All Methods Instance Methods Abstract Methods
`protected abstract SecretKey` `engineGenerateKey()` Generates a secret key.
`protected abstract void` `engineInit(int keysize, SecureRandom random)` Initializes this key generator for a certain keysize, using the given source of randomness.
`protected abstract void` `engineInit(SecureRandom random)` Initializes the key generator.
`protected abstract void` `engineInit(AlgorithmParameterSpec params, SecureRandom random)` Initializes the key generator with the specified parameter set and a user-provided source of randomness.

### Methods inherited from class java.lang.Object

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

### Constructor Detail

#### KeyGeneratorSpi

    public KeyGeneratorSpi()

### Method Detail

#### engineInit

    protected abstract void engineInit(SecureRandom random)

Initializes the key generator.

Parameters:
  `random` - the source of randomness for this generator

#### engineInit

    protected abstract void engineInit(AlgorithmParameterSpec params,
                                       SecureRandom random)
                                throws InvalidAlgorithmParameterException

Initializes the key generator with the specified parameter set and a user-provided source of randomness.

Parameters:
  `params` - the key generation parameters
  `random` - the source of randomness for this key generator
Throws:
  `InvalidAlgorithmParameterException` - if `params` is inappropriate for this key generator

#### engineInit

    protected abstract void engineInit(int keysize,
                                       SecureRandom random)

Initializes this key generator for a certain keysize, using the given source of randomness.

Parameters:
  `keysize` - the keysize. This is an algorithm-specific metric, specified in number of bits.
  `random` - the source of randomness for this key generator
Throws:
  `InvalidParameterException` - if the keysize is wrong or not supported.

#### engineGenerateKey

    protected abstract SecretKey engineGenerateKey()

Generates a secret key.

Returns:
  the new key