From 986db839144ce24011770cf59a749897b0f65fdb Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Mon, 7 Oct 2024 14:49:53 -0400 Subject: [PATCH] null check as asserts, and better exception messages --- .../share/classes/sun/security/provider/NamedKEM.java | 11 ++++++++--- .../sun/security/provider/NamedKeyFactory.java | 5 ++++- .../sun/security/provider/NamedKeyPairGenerator.java | 5 ++++- .../classes/sun/security/provider/NamedSignature.java | 8 ++++++-- test/jdk/sun/security/provider/NamedEdDSA.java | 5 +++++ 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/java.base/share/classes/sun/security/provider/NamedKEM.java b/src/java.base/share/classes/sun/security/provider/NamedKEM.java index 1d02d385376c4..8f403000dab9f 100644 --- a/src/java.base/share/classes/sun/security/provider/NamedKEM.java +++ b/src/java.base/share/classes/sun/security/provider/NamedKEM.java @@ -57,10 +57,13 @@ public abstract class NamedKEM implements KEMSpi { /// @param fname the family name /// @param pnames the standard parameter set names, at least one is needed. protected NamedKEM(String fname, String... pnames) { - this.fname = Objects.requireNonNull(fname); + if (fname == null) { + throw new AssertionError("fname cannot be null"); + } if (pnames == null || pnames.length == 0) { throw new AssertionError("pnames cannot be null or empty"); } + this.fname = fname; this.pnames = pnames; } @@ -69,7 +72,8 @@ public EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException { if (spec != null) { - throw new InvalidAlgorithmParameterException("No params needed"); + throw new InvalidAlgorithmParameterException( + "The " + fname + " algorithm does not take any parameters"); } // translate also check the key var nk = (NamedX509Key) new NamedKeyFactory(fname, pnames) @@ -84,7 +88,8 @@ public DecapsulatorSpi engineNewDecapsulator( PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException { if (spec != null) { - throw new InvalidAlgorithmParameterException("No params needed"); + throw new InvalidAlgorithmParameterException( + "The " + fname + " algorithm does not take any parameters"); } // translate also check the key var nk = (NamedPKCS8Key) new NamedKeyFactory(fname, pnames) diff --git a/src/java.base/share/classes/sun/security/provider/NamedKeyFactory.java b/src/java.base/share/classes/sun/security/provider/NamedKeyFactory.java index 301f183be02ea..c25908ee052ad 100644 --- a/src/java.base/share/classes/sun/security/provider/NamedKeyFactory.java +++ b/src/java.base/share/classes/sun/security/provider/NamedKeyFactory.java @@ -68,10 +68,13 @@ public class NamedKeyFactory extends KeyFactorySpi { /// @param fname the family name /// @param pnames the standard parameter set names, at least one is needed. protected NamedKeyFactory(String fname, String... pnames) { - this.fname = Objects.requireNonNull(fname); + if (fname == null) { + throw new AssertionError("fname cannot be null"); + } if (pnames == null || pnames.length == 0) { throw new AssertionError("pnames cannot be null or empty"); } + this.fname = fname; this.pnames = pnames; } diff --git a/src/java.base/share/classes/sun/security/provider/NamedKeyPairGenerator.java b/src/java.base/share/classes/sun/security/provider/NamedKeyPairGenerator.java index c851a9a013c2f..6d6954dc03340 100644 --- a/src/java.base/share/classes/sun/security/provider/NamedKeyPairGenerator.java +++ b/src/java.base/share/classes/sun/security/provider/NamedKeyPairGenerator.java @@ -108,10 +108,13 @@ public abstract class NamedKeyPairGenerator extends KeyPairGeneratorSpi { /// @param pnames supported parameter set names, at least one is needed. /// If multiple, the first one becomes the default parameter set name. protected NamedKeyPairGenerator(String fname, String... pnames) { - this.fname = Objects.requireNonNull(fname); + if (fname == null) { + throw new AssertionError("fname cannot be null"); + } if (pnames == null || pnames.length == 0) { throw new AssertionError("pnames cannot be null or empty"); } + this.fname = fname; this.pnames = pnames; } diff --git a/src/java.base/share/classes/sun/security/provider/NamedSignature.java b/src/java.base/share/classes/sun/security/provider/NamedSignature.java index 163b7e834f45a..e50dc7bc779dc 100644 --- a/src/java.base/share/classes/sun/security/provider/NamedSignature.java +++ b/src/java.base/share/classes/sun/security/provider/NamedSignature.java @@ -67,10 +67,13 @@ public abstract class NamedSignature extends SignatureSpi { /// @param fname the family name /// @param pnames the standard parameter set names, at least one is needed. protected NamedSignature(String fname, String... pnames) { - this.fname = Objects.requireNonNull(fname); + if (fname == null) { + throw new AssertionError("fname cannot be null"); + } if (pnames == null || pnames.length == 0) { throw new AssertionError("pnames cannot be null or empty"); } + this.fname = fname; this.pnames = pnames; } @@ -147,7 +150,8 @@ protected Object engineGetParameter(String param) throws InvalidParameterExcepti protected void engineSetParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException { if (params != null) { - throw new InvalidAlgorithmParameterException("No params needed"); + throw new InvalidAlgorithmParameterException( + "The " + fname + " algorithm does not take any parameters"); } } diff --git a/test/jdk/sun/security/provider/NamedEdDSA.java b/test/jdk/sun/security/provider/NamedEdDSA.java index 04d334e2ee379..4d0e3e9228aac 100644 --- a/test/jdk/sun/security/provider/NamedEdDSA.java +++ b/test/jdk/sun/security/provider/NamedEdDSA.java @@ -32,6 +32,7 @@ */ import jdk.test.lib.Asserts; +import jdk.test.lib.Utils; import sun.security.ec.ed.EdDSAOperations; import sun.security.ec.ed.EdDSAParameters; import sun.security.ec.point.AffinePoint; @@ -230,5 +231,9 @@ static void test(Provider p1, Provider p2, Provider p3) throws Exception { Asserts.assertTrue(s2.verify(sig1)); s2.initVerify(pk); Asserts.assertTrue(s2.verify(sig2)); + // No parameters defined + s1.setParameter(null); + Utils.runAndCheckException(() -> s1.setParameter(NamedParameterSpec.ED448), + InvalidAlgorithmParameterException.class); } }