--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/security/misc/GetInstanceNullsEmpties.java Tue Sep 12 19:03:39 2017 +0200
@@ -0,0 +1,696 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.security.*;
+import java.security.cert.*;
+import javax.crypto.*;
+import javax.net.ssl.*;
+import javax.security.auth.login.*;
+import java.lang.reflect.*;
+import java.util.Arrays;
+
+/*
+ * @test
+ * @bug 4985694
+ * @summary Incomplete spec for most of the getInstances
+ */
+/**
+ * A simple test to see what is being thrown when null Strings are passed
+ * to the various getInstance() methods.
+ *
+ * These tests use various algorithm names that don't exist (e.g. "FOO"
+ * Ciphers). Just need something non-null for testing, as the tests will throw
+ * exceptions before trying to instantiate a real object.
+ */
+public class GetInstanceNullsEmpties {
+
+ private static final Provider SUN = Security.getProvider("SUN");
+
+ /*
+ * See if there are more than "expected" number of getInstance() methods,
+ * which will indicate to developers that this test needs an update.
+ */
+ private static void checkNewMethods(Class<?> clazz, int expected)
+ throws Exception {
+
+ long found = Arrays.stream(clazz.getMethods())
+ .filter(name -> name.getName().equals("getInstance"))
+ .count();
+
+ if (found != expected) {
+ throw new Exception("Number of getInstance() mismatch: "
+ + expected + " expected, " + found + " found");
+ }
+ }
+
+ /**
+ * Main loop.
+ */
+ public static void main(String[] args) throws Exception {
+
+ /*
+ * JCA
+ */
+ testAlgorithmParameterGenerator();
+ testAlgorithmParameters();
+ testCertificateFactory();
+ testCertPathBuilder();
+ testCertPathValidator();
+ testCertStore();
+ testKeyFactory();
+ testKeyPairGenerator();
+ testKeyStore();
+ testMessageDigest();
+ testPolicy();
+ testSecureRandom();
+ testSignature();
+
+ /*
+ * JCE
+ */
+ testCipher();
+ testExemptionMechanism();
+ testKeyAgreement();
+ testKeyGenerator();
+ testMac();
+ testSecretKeyFactory();
+
+ /*
+ * JSSE
+ */
+ testKeyManagerFactory();
+ testSSLContext();
+ testTrustManagerFactory();
+
+ /*
+ * JGSS
+ *
+ * KeyTab.getInstance doesn't take algorithm names, so we'll
+ * ignore this one.
+ */
+ testConfiguration();
+
+ System.out.println("\nTEST PASSED!");
+ }
+
+ private static Method getInstance(Class clazz, Class... args)
+ throws Exception {
+ boolean firstPrinted = false;
+
+ System.out.print("\n" + clazz.getName() + "(");
+ for (Class c : args) {
+ System.out.print(firstPrinted
+ ? ", " + c.getName() : c.getName());
+ firstPrinted = true;
+ }
+ System.out.println("):");
+
+ return clazz.getMethod("getInstance", args);
+ }
+
+ private static void run(Method m, Class expectedException,
+ Object... args) throws Exception {
+
+ try {
+ m.invoke(null, args);
+ throw new Exception("Didn't throw exception");
+ } catch (InvocationTargetException ite) {
+ Throwable root = ite.getCause();
+ if (root instanceof Exception) {
+ Exception e = (Exception) root;
+ if (expectedException.isInstance(e)) {
+ System.out.print("OK ");
+ return;
+ } else {
+ System.out.println(
+ "Unexpected InvocationTargetException!");
+ throw e;
+ }
+ }
+ throw ite;
+ }
+ }
+
+ /*
+ * Constants so lines aren't so long.
+ */
+ private static final Class STRING = String.class;
+ private static final Class PROVIDER = Provider.class;
+
+ private static void testAlgorithmParameterGenerator() throws Exception {
+ Class clazz = AlgorithmParameterGenerator.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testAlgorithmParameters() throws Exception {
+ Class clazz = AlgorithmParameters.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testCertPathBuilder() throws Exception {
+ Class clazz = CertPathBuilder.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testCertPathValidator() throws Exception {
+ Class clazz = CertPathValidator.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testCertStore() throws Exception {
+ Class clazz = CertStore.class;
+ Method m;
+ CertStoreParameters csp = () -> null;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING, CertStoreParameters.class);
+ run(m, NullPointerException.class, (Object) null, csp);
+ run(m, NoSuchAlgorithmException.class, "", csp);
+
+ m = getInstance(clazz, STRING, CertStoreParameters.class, STRING);
+ run(m, NullPointerException.class, null, csp, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", csp, "SUN");
+ run(m, IllegalArgumentException.class, "FOO", csp, null);
+ run(m, IllegalArgumentException.class, "FOO", csp, "");
+
+ m = getInstance(clazz, STRING, CertStoreParameters.class, PROVIDER);
+ run(m, NullPointerException.class, null, csp, SUN);
+ run(m, NoSuchAlgorithmException.class, "", csp, SUN);
+ run(m, IllegalArgumentException.class, "FOO", csp, null);
+ }
+
+ private static void testCertificateFactory() throws Exception {
+ Class clazz = CertificateFactory.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, CertificateException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, CertificateException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, CertificateException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testCipher() throws Exception {
+ Class clazz = Cipher.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ /*
+ * Note the Cipher API is spec'd to throw a NoSuchAlgorithmException
+ * for a null transformation.
+ */
+ m = getInstance(clazz, STRING);
+ run(m, NoSuchAlgorithmException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NoSuchAlgorithmException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NoSuchAlgorithmException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testConfiguration() throws Exception {
+ Class clazz = Configuration.class;
+ Method m;
+ Configuration.Parameters cp = new Configuration.Parameters() {
+ };
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING, Configuration.Parameters.class);
+ run(m, NullPointerException.class, (Object) null, cp);
+ run(m, NoSuchAlgorithmException.class, "", cp);
+
+ m = getInstance(clazz, STRING, Configuration.Parameters.class, STRING);
+ run(m, NullPointerException.class, null, cp, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", cp, "SUN");
+ run(m, IllegalArgumentException.class, "FOO", cp, null);
+ run(m, IllegalArgumentException.class, "FOO", cp, "");
+
+ m = getInstance(clazz, STRING, Configuration.Parameters.class,
+ PROVIDER);
+ run(m, NullPointerException.class, null, cp, SUN);
+ run(m, NoSuchAlgorithmException.class, "", cp, SUN);
+ run(m, IllegalArgumentException.class, "FOO", cp, null);
+ }
+
+ private static void testExemptionMechanism() throws Exception {
+ Class clazz = ExemptionMechanism.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testKeyAgreement() throws Exception {
+ Class clazz = KeyAgreement.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testKeyFactory() throws Exception {
+ Class clazz = KeyFactory.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testKeyGenerator() throws Exception {
+ Class clazz = KeyGenerator.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testKeyManagerFactory() throws Exception {
+ Class clazz = KeyManagerFactory.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testKeyPairGenerator() throws Exception {
+ Class clazz = KeyPairGenerator.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testKeyStore() throws Exception {
+ Class clazz = KeyStore.class;
+ Method m;
+
+ /*
+ * There are actually two additional getInstance() methods with File
+ * as the first parameter.
+ */
+ checkNewMethods(clazz, 5);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, KeyStoreException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, KeyStoreException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, KeyStoreException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testMac() throws Exception {
+ Class clazz = Mac.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testMessageDigest() throws Exception {
+ Class clazz = MessageDigest.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testPolicy() throws Exception {
+ Class clazz = Policy.class;
+ Method m;
+ Policy.Parameters pp = new Policy.Parameters() {
+ };
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING, Policy.Parameters.class);
+ run(m, NullPointerException.class, (Object) null, pp);
+ run(m, NoSuchAlgorithmException.class, "", pp);
+
+ m = getInstance(clazz, STRING, Policy.Parameters.class, STRING);
+ run(m, NullPointerException.class, null, pp, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", pp, "SUN");
+ run(m, IllegalArgumentException.class, "FOO", pp, null);
+ run(m, IllegalArgumentException.class, "FOO", pp, "");
+
+ m = getInstance(clazz, STRING, Policy.Parameters.class, PROVIDER);
+ run(m, NullPointerException.class, null, pp, SUN);
+ run(m, NoSuchAlgorithmException.class, "", pp, SUN);
+ run(m, IllegalArgumentException.class, "FOO", pp, null);
+ }
+
+ private static void testSSLContext() throws Exception {
+ Class clazz = SSLContext.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testSecretKeyFactory() throws Exception {
+ Class clazz = SecretKeyFactory.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testSecureRandom() throws Exception {
+ Class clazz = SecureRandom.class;
+ Method m;
+ SecureRandomParameters srp = new SecureRandomParameters() {
+ };
+
+ checkNewMethods(clazz, 6);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+
+ m = getInstance(clazz, STRING, SecureRandomParameters.class);
+ run(m, NullPointerException.class, (Object) null, srp);
+ run(m, NoSuchAlgorithmException.class, "", srp);
+
+ m = getInstance(clazz, STRING, SecureRandomParameters.class, STRING);
+ run(m, NullPointerException.class, null, srp, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", srp, "SUN");
+ run(m, IllegalArgumentException.class, "FOO", srp, null);
+ run(m, IllegalArgumentException.class, "FOO", srp, "");
+
+ m = getInstance(clazz, STRING, SecureRandomParameters.class, PROVIDER);
+ run(m, NullPointerException.class, null, srp, SUN);
+ run(m, NoSuchAlgorithmException.class, "", srp, SUN);
+ run(m, IllegalArgumentException.class, "FOO", srp, null);
+ }
+
+ private static void testSignature() throws Exception {
+ Class clazz = Signature.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+
+ private static void testTrustManagerFactory() throws Exception {
+ Class clazz = TrustManagerFactory.class;
+ Method m;
+
+ checkNewMethods(clazz, 3);
+
+ m = getInstance(clazz, STRING);
+ run(m, NullPointerException.class, (Object) null);
+ run(m, NoSuchAlgorithmException.class, "");
+
+ m = getInstance(clazz, STRING, STRING);
+ run(m, NullPointerException.class, null, "SUN");
+ run(m, NoSuchAlgorithmException.class, "", "SUN");
+ run(m, IllegalArgumentException.class, "FOO", null);
+ run(m, IllegalArgumentException.class, "FOO", "");
+
+ m = getInstance(clazz, STRING, PROVIDER);
+ run(m, NullPointerException.class, null, SUN);
+ run(m, NoSuchAlgorithmException.class, "", SUN);
+ run(m, IllegalArgumentException.class, "FOO", null);
+ }
+}