KeyGeneratorSpi (Java Platform SE 8 )
Keywords: javax.crypto.KeyGeneratorSpi class
Date: 2026-04-24

compact1, compact2, compact3
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
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract SecretKey` | `engineGenerateKey()` Generates a secret key.
    `protected abstract void` | `engineInit(AlgorithmParameterSpec params, SecureRandom random)` Initializes the key generator with the specified parameter set and a user-provided source of randomness.
    `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.

    - ### 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

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.