Class KDFSpi

java.lang.Object
javax.crypto.KDFSpi

public abstract class KDFSpi extends Object
KDFSpi is a preview API of the Java platform.
Programs can only use KDFSpi when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
This class defines the Service Provider Interface (SPI) for the Key Derivation Function (KDFPREVIEW) class.

All the abstract methods in this class must be implemented by each cryptographic service provider who wishes to supply the implementation of a particular key derivation function algorithm.

Implementations must provide a public constructor which accepts a KDFParameters object if they depend on the default implementation of Provider.Service.newInstance to construct KDFSpi instances. The constructor must call super(params) passing the parameters supplied. The constructor must also throw an InvalidAlgorithmParameterException if the supplied parameters are inappropriate. If a KDF object is instantiated with one of the getInstance methods that contains a KDFParameters parameter, the user-provided KDFParameters object will be passed to the constructor of the KDFSpi implementation. Otherwise, if it is instantiated with one of the getInstance methods without a KDFParameters parameter, a null value will be passed to the constructor.

Implementations which do not support KDFParameters must require null to be passed, otherwise an InvalidAlgorithmParameterException will be thrown. On the other hand, implementations which require KDFParameters should throw an InvalidAlgorithmParameterException upon receiving a null value if default parameters cannot be generated or upon receiving KDFParameters which are not supported by the implementation.

To aid the caller, implementations may return parameters with additional default values or supply random values as used by the underlying KDF algorithm. See engineGetParameters() for more details.

Since:
24
See Also:
  • Constructor Details

  • Method Details

    • engineGetParameters

      protected abstract KDFParametersPREVIEW engineGetParameters()
      Returns the KDFParameters used with this KDF object.

      The returned parameters may be the same that were used to initialize this KDF object, or may contain additional default or random parameter values used by the underlying KDF algorithm. If the required parameters were not supplied and can be generated by the KDF object, the generated parameters are returned; otherwise null is returned.

      Returns:
      the parameters used with this KDF object, or null
    • engineDeriveKey

      protected abstract SecretKey engineDeriveKey(String alg, AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException, NoSuchAlgorithmException
      Derives a key, returned as a SecretKey object.
      Implementation Note:
      If the resultant key is extractable, then its getEncoded value should have the same content as the result of deriveData.
      Parameters:
      alg - the algorithm of the resultant SecretKey object
      derivationSpec - derivation parameters
      Returns:
      the derived key.
      Throws:
      InvalidAlgorithmParameterException - if the information contained within the derivationSpec is invalid or if the combination of alg and the derivationSpec results in something invalid
      NoSuchAlgorithmException - if alg is empty or invalid
      NullPointerException - if alg or derivationSpec is null
    • engineDeriveData

      protected abstract byte[] engineDeriveData(AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException
      Derives a key, returns raw data as a byte array.
      Parameters:
      derivationSpec - derivation parameters
      Returns:
      the derived key in its raw bytes.
      Throws:
      InvalidAlgorithmParameterException - if the information contained within the derivationSpec is invalid
      UnsupportedOperationException - if the derived keying material is not extractable
      NullPointerException - if derivationSpec is null