RFR: 8359388: Stricter checking for cipher transformations [v4]

Sean Mullan mullan at openjdk.org
Tue Jul 1 22:45:45 UTC 2025


On Wed, 18 Jun 2025 06:27:13 GMT, Valerie Peng <valeriep at openjdk.org> wrote:

>> Based on the javadoc of `javax.crypto.Cipher` class, the cipher transformation should be either "algorithm/mode/padding" or
>> "algorithm". When parsing the transformation, space(s) is trimmed off and empty strings are considered as "unspecified". This PR adds checks to ensure that transformations with empty "mode" and/or "padding" value in the "algorithm/mode/padding" form leads to `NoSuchAlgorithmException`. This reverts some changes made in [https://bugs.openjdk.org/browse/JDK-8358159](https://bugs.openjdk.org/browse/JDK-8358159) which allows empty mode and/or padding in the transformations.
>> 
>> 
>> Thanks in advance for the review~
>
> Valerie Peng has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Updated test per 2nd round of Mikhail's review comments.

src/java.base/share/classes/javax/crypto/Cipher.java line 470:

> 468:             // Algorithm only
> 469:             Transform tr = new Transform(parts[0], "", null, null);
> 470:             return Collections.singletonList(tr);

Or `List.of(tr)`.

src/java.base/share/classes/javax/crypto/Cipher.java line 479:

> 477:             list.add(new Transform(parts[0], "//" + parts[2], parts[1], null));
> 478:             list.add(new Transform(parts[0], "", parts[1], parts[2]));
> 479:             return list;

Does this need to be immutable or does it not matter?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25808#discussion_r2178673434
PR Review Comment: https://git.openjdk.org/jdk/pull/25808#discussion_r2178675369


More information about the security-dev mailing list