APIdia Launch Partner
Top Description Constructors Methods
javax.crypto

public abstract Class KDFSpi

extends Object
Class Inheritance
Known Direct Subclasses
com.sun.crypto.provider.HKDFKeyDerivation
Imports
java.security.InvalidAlgorithmParameterException, .NoSuchAlgorithmException, java.security.spec.AlgorithmParameterSpec

This class defines the Service Provider Interface (SPI) for the Key Derivation Function (KDF) 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 KDFSpi#engineGetParameters() for more details.

Since
25
See Also
KDF, KDFParameters, KDF#getParameters(), SecretKey

Constructor Summary

AccessConstructor and Description
protected
KDFSpi(KDFParameters
the initialization parameters for the KDF algorithm (may be null)
kdfParameters
)

The sole constructor.

Method Summary

Modifier and TypeMethod and Description
protected abstract byte[]

Returns:

the derived key in its raw bytes.
engineDeriveData
(AlgorithmParameterSpec
derivation parameters
derivationSpec
)

Derives a key, returns raw data as a byte array.

protected abstract SecretKey

Returns:

the derived key.
engineDeriveKey
(String
the algorithm of the resultant SecretKey object. See the SecretKey Algorithms section in the Java Security Standard Algorithm Names Specification for information about standard secret key algorithm names.
alg
,
AlgorithmParameterSpec
derivation parameters
derivationSpec
)

Derives a key, returned as a SecretKey object.

protected abstract KDFParameters

Returns:

the parameters used with this KDF object, or null
engineGetParameters
()

Returns the KDFParameters used with this KDF object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

KDFSpiback to summary
protected KDFSpi(KDFParameters kdfParameters) throws InvalidAlgorithmParameterException

The sole constructor.

A KDFParameters object may be specified for KDF algorithms that support initialization parameters.

Parameters
kdfParameters:KDFParameters

the initialization parameters for the KDF algorithm (may be null)

Exceptions
InvalidAlgorithmParameterException:
if the initialization parameters are inappropriate for this KDFSpi
See Also
KDF#getParameters()

Method Detail

engineDeriveDataback to summary
protected abstract byte[] engineDeriveData(AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException

Derives a key, returns raw data as a byte array.

Parameters
derivationSpec:AlgorithmParameterSpec

derivation parameters

Returns:byte[]

the derived key in its raw bytes.

Exceptions
InvalidAlgorithmParameterException:
if the information contained within the derivationSpec is invalid
UnsupportedOperationException:
if the derived keying material is not extractable
NullPointerException:
if derivationSpec is null
engineDeriveKeyback to summary
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:String

the algorithm of the resultant SecretKey object. See the SecretKey Algorithms section in the Java Security Standard Algorithm Names Specification for information about standard secret key algorithm names.

derivationSpec:AlgorithmParameterSpec

derivation parameters

Returns:SecretKey

the derived key.

Exceptions
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
External Specification
Java Security Standard Algorithm Names
engineGetParametersback to summary
protected abstract KDFParameters 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:KDFParameters

the parameters used with this KDF object, or null