Add kdf module: Key Derivation Function API (JEP 510, final in JDK 25), HKDF, RFC 5869 vectors, interop with Python cryptography and openssl, per-tenant keys
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b7rnC7jppGGdHGESvy
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
$ javap javax.crypto.KDF javax.crypto.KDFParameters javax.crypto.KDFSpi javax.crypto.spec.HKDFParameterSpec 'javax.crypto.spec.HKDFParameterSpec$Builder' ... (25.0.5+8-LTS)
|
||||
public final class javax.crypto.KDF {
|
||||
static final boolean $assertionsDisabled;
|
||||
public java.lang.String getAlgorithm();
|
||||
public java.lang.String getProviderName();
|
||||
public javax.crypto.KDFParameters getParameters();
|
||||
public static javax.crypto.KDF getInstance(java.lang.String) throws java.security.NoSuchAlgorithmException;
|
||||
public static javax.crypto.KDF getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
|
||||
public static javax.crypto.KDF getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
|
||||
public static javax.crypto.KDF getInstance(java.lang.String, javax.crypto.KDFParameters) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException;
|
||||
public static javax.crypto.KDF getInstance(java.lang.String, javax.crypto.KDFParameters, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.InvalidAlgorithmParameterException;
|
||||
public static javax.crypto.KDF getInstance(java.lang.String, javax.crypto.KDFParameters, java.security.Provider) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException;
|
||||
public javax.crypto.SecretKey deriveKey(java.lang.String, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
|
||||
public byte[] deriveData(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
|
||||
static {};
|
||||
}
|
||||
public interface javax.crypto.KDFParameters {
|
||||
}
|
||||
public abstract class javax.crypto.KDFSpi {
|
||||
protected javax.crypto.KDFSpi(javax.crypto.KDFParameters) throws java.security.InvalidAlgorithmParameterException;
|
||||
protected abstract javax.crypto.KDFParameters engineGetParameters();
|
||||
protected abstract javax.crypto.SecretKey engineDeriveKey(java.lang.String, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
|
||||
protected abstract byte[] engineDeriveData(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
|
||||
}
|
||||
public interface javax.crypto.spec.HKDFParameterSpec extends java.security.spec.AlgorithmParameterSpec {
|
||||
public static javax.crypto.spec.HKDFParameterSpec$Builder ofExtract();
|
||||
public static javax.crypto.spec.HKDFParameterSpec$Expand expandOnly(javax.crypto.SecretKey, byte[], int);
|
||||
}
|
||||
public final class javax.crypto.spec.HKDFParameterSpec$Builder {
|
||||
public javax.crypto.spec.HKDFParameterSpec$Extract extractOnly();
|
||||
public javax.crypto.spec.HKDFParameterSpec$ExtractThenExpand thenExpand(byte[], int);
|
||||
public javax.crypto.spec.HKDFParameterSpec$Builder addIKM(javax.crypto.SecretKey);
|
||||
public javax.crypto.spec.HKDFParameterSpec$Builder addIKM(byte[]);
|
||||
public javax.crypto.spec.HKDFParameterSpec$Builder addSalt(javax.crypto.SecretKey);
|
||||
public javax.crypto.spec.HKDFParameterSpec$Builder addSalt(byte[]);
|
||||
}
|
||||
public final class javax.crypto.spec.HKDFParameterSpec$Extract implements javax.crypto.spec.HKDFParameterSpec {
|
||||
public java.util.List<javax.crypto.SecretKey> ikms();
|
||||
public java.util.List<javax.crypto.SecretKey> salts();
|
||||
}
|
||||
public final class javax.crypto.spec.HKDFParameterSpec$Expand implements javax.crypto.spec.HKDFParameterSpec {
|
||||
public javax.crypto.SecretKey prk();
|
||||
public byte[] info();
|
||||
public int length();
|
||||
}
|
||||
public final class javax.crypto.spec.HKDFParameterSpec$ExtractThenExpand implements javax.crypto.spec.HKDFParameterSpec {
|
||||
public java.util.List<javax.crypto.SecretKey> ikms();
|
||||
public java.util.List<javax.crypto.SecretKey> salts();
|
||||
public byte[] info();
|
||||
public int length();
|
||||
}
|
||||
|
||||
$ javap -v javax.crypto.KDF | grep -ci PreviewFeature (0 = not a preview API)
|
||||
0
|
||||
$ unzip -p src.zip java.base/javax/crypto/KDF.java | grep @since
|
||||
* @since 25
|
||||
Reference in New Issue
Block a user