On Fri, 18 Jul 2025 01:44:33 GMT, Valerie Peng <[email protected]> wrote:
> This enhancement introduces a new security property
> "jdk.crypto.disabledAlgorithms" which can be leveraged to disable algorithms
> for JCE/JCA crypto services. For now, only Cipher, KeyStore, MessageDigest,
> and Signature services support this new security property. The support can be
> expanded later to cover more services if needed. Note that this security
> property is meant to disable algorithms irrespective of providers. If the
> algorithm is found to be disabled, it will be rejected before reaching out to
> provider(s) for the corresponding implementation(s).
>
> A few implementation notes:
> 1) The specified security property value is lazily loaded and all changes
> after it's been loaded are ignored. Invalid entries, e.g. wrong syntax, are
> ignored and removed. The algorithm name check is case-insensitive. If a
> disabled algorithm is known to has an object identifier (oid) by JDK, this
> oid and its aliases is also added to the disabled services.
> 2) The algorithm name checking impl is based on the
> sun.security.util.AlgorithmConstraints class, but without the decomposing and
> different constraints.
> 3) The hardwiring of NONEwithRSA signature to RSA/ECB/PKCS1Padding cipher in
> java.security.Signature class is removed. Instead, this is moved to the
> provider level, i.e. SunJCE and SunPKCS11 provider are changed to claim the
> NONEwithRSA signature support. Disabling one will not affect the other.
>
> CSR will be filed once the review is wrapping up.
>
> Thanks~
> Valerie
Some initial comments.
src/java.base/share/classes/javax/crypto/Cipher.java line 526:
> 524: * on the transformation defaults used by JDK providers.
> 525: * </li>
> 526: * <li>the {@code jdk.crypto.disabledAlgorithms}
Missing "The JDK Reference Implementation additionally uses".
src/java.base/share/classes/javax/crypto/Cipher.java line 702:
> 700: * on the transformation defaults used by JDK providers.
> 701: *
> 702: * @implNote
You also need a similar implNote for `getInstance(String, String)`.
src/java.base/share/classes/javax/crypto/Cipher.java line 706:
> 704: * the {@code jdk.crypto.disabledAlgorithms}
> 705: * {@link Security#getProperty(String) Security} property to
> determine
> 706: * if the specified keystore type is allowed.
s/keystore type/algorithm/
-------------
PR Review: https://git.openjdk.org/jdk/pull/26377#pullrequestreview-3053183717
PR Review Comment: https://git.openjdk.org/jdk/pull/26377#discussion_r2229514609
PR Review Comment: https://git.openjdk.org/jdk/pull/26377#discussion_r2229532938
PR Review Comment: https://git.openjdk.org/jdk/pull/26377#discussion_r2229513661