Class KDFSpi
public abstract class KDFSpi extends Object
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 engineGetParameters() for more details.
- Since:
- 25
- See Also:
Constructor Summary
| Modifier | Constructor | Description |
|---|---|---|
protected |
The sole constructor. |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
protected abstract byte[] |
engineDeriveData |
Derives a key, returns raw data as a byte array. |
protected abstract SecretKey |
engineDeriveKey |
Derives a key, returned as a SecretKey object. |
protected abstract KDFParameters |
engineGetParameters() |
Returns the KDFParameters used with this KDF object. |
Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Modifier and Type | Method | Description |
|---|---|---|
protected Object |
clone() |
Creates and returns a copy of this object. |
boolean |
equals |
Indicates whether some other object is "equal to" this one. |
protected void |
finalize() |
Deprecated, for removal: This API element is subject to removal in a future version. Finalization is deprecated and subject to removal in a future release. |
final Class |
getClass() |
Returns the runtime class of this Object. |
int |
hashCode() |
Returns a hash code value for this object. |
final void |
notify() |
Wakes up a single thread that is waiting on this object's monitor. |
final void |
notifyAll() |
Wakes up all threads that are waiting on this object's monitor. |
String |
toString() |
Returns a string representation of the object. |
final void |
wait() |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
Constructor Details
KDFSpi
protected KDFSpi(KDFParameters kdfParameters) throws InvalidAlgorithmParameterException
A KDFParameters object may be specified for KDF algorithms that support initialization parameters.
- Parameters:
-
kdfParameters- the initialization parameters for theKDFalgorithm (may benull) - Throws:
-
InvalidAlgorithmParameterException- if the initialization parameters are inappropriate for thisKDFSpi - See Also:
Method Details
engineGetParameters
protected abstract KDFParameters engineGetParameters()
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
KDFobject, ornull
engineDeriveKey
protected abstract SecretKey engineDeriveKey(String alg, AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException, NoSuchAlgorithmException
SecretKey object.- Implementation Note:
- If the resultant key is extractable, then its
getEncodedvalue should have the same content as the result ofderiveData. - Parameters:
-
alg- the algorithm of the resultantSecretKeyobject. See the SecretKey Algorithms section in the Java Security Standard Algorithm Names Specification for information about standard secret key algorithm names. -
derivationSpec- derivation parameters - Returns:
- the derived key.
- Throws:
-
InvalidAlgorithmParameterException- if the information contained within thederivationSpecis invalid or if the combination ofalgand thederivationSpecresults in something invalid -
NoSuchAlgorithmException- ifalgis empty or invalid -
NullPointerException- ifalgorderivationSpecis null - External Specifications
engineDeriveData
protected abstract byte[] engineDeriveData(AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException
- Parameters:
-
derivationSpec- derivation parameters - Returns:
- the derived key in its raw bytes.
- Throws:
-
InvalidAlgorithmParameterException- if the information contained within thederivationSpecis invalid -
UnsupportedOperationException- if the derived keying material is not extractable -
NullPointerException- ifderivationSpecis null
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.