RFR: 8243585: AlgorithmChecker::check throws confusing exception when it rejects the signer key

Weijun Wang weijun at openjdk.java.net
Tue Oct 19 14:57:50 UTC 2021

On Wed, 13 Oct 2021 13:42:25 GMT, Sean Mullan <mullan at openjdk.org> wrote:

> This fix improves the exception message to better indicate when the key (and not the signature algorithm) is restricted. This change also includes a few other improvements:
> - The constraints checking in `AlgorithmChecker.check()` has been improved. If the `AlgorithmConstraints` are an instance of `DisabledAlgorithmConstraints`, the internal `permits` methods are always called; otherwise the public `permits` methods are called. This makes the code easier to understand, and fixes at least one case where duplicate checks were being done.
> - The above change caused some of the exception messages to be slightly different, so some tests that checked the error messages had to be updated to reflect that.
> - AlgorithmDecomposer now stores the canonical algorithm names in a Map, which fixed a bug where "RSASSA-PSS" was not being restricted properly.

src/java.base/share/classes/sun/security/util/AlgorithmDecomposer.java line 48:

> 46:                "SHA-384", "SHA384", "SHA-512", "SHA512", "SHA-512/224",
> 47:                "SHA512/224", "SHA-512/256", "SHA512/256");
> 48: 

Do you want to support the "SHA" -> "SHA1" mapping?

src/java.base/share/classes/sun/security/util/AlgorithmDecomposer.java line 196:

> 194:     static String canonicalName(String algorithm) {
> 195:         return CANONICAL_NAME.getOrDefault(algorithm, algorithm);
> 196:     }

I'm not sure if `canonicalName` is good. Normally, we say "SHA-1" is the standard name but this method changes it to "SHA1".


PR: https://git.openjdk.java.net/jdk/pull/5928

More information about the security-dev mailing list