RFR: 8331008: Implement JEP 478: Key Derivation Function API (Preview) [v47]

Weijun Wang weijun at openjdk.org
Tue Sep 24 18:29:04 UTC 2024


On Mon, 23 Sep 2024 20:16:49 GMT, Kevin Driver <kdriver at openjdk.org> wrote:

>> Introduce an API for Key Derivation Functions (KDFs), which are cryptographic algorithms for deriving additional keys from a secret key and other data. See [JEP 478](https://openjdk.org/jeps/478).
>> 
>> Work was begun in [another PR](https://github.com/openjdk/jdk/pull/18924).
>
> Kevin Driver has updated the pull request incrementally with one additional commit since the last revision:
> 
>   additional DPS tests, removal of private method

src/java.base/share/classes/javax/crypto/KDF.java line 546:

> 544:         if (checkSpiNonNull(theOne)) return;
> 545: 
> 546:         synchronized (lock) {

Sorry I missed this last time. The `if (checkSpiNonNull(theOne)` check also must be repeated inside the `synchronized` block.

Suppose 2 threads, one calling `deriveData` and one calling `getProviderName`, are running at the same time. Both start with `theOne` being null and reach the block. The `deriveData` thread gets the lock, chooses a provider, and assigns `theOne`. When it releases the lock the `getProviderName` thread enters this block and updated `theOne`. This should not happen.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20301#discussion_r1773827647


More information about the security-dev mailing list