1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.xnet.tests.javax.net.ssl;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.InvalidAlgorithmParameterException;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStore;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStoreException;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchAlgorithmException;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchProviderException;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Provider;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Security;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.UnrecoverableKeyException;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.ManagerFactoryParameters;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.KeyManager;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.KeyManagerFactory;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.KeyManagerFactorySpi;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.xnet.tests.support.SpiEngUtils;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.xnet.tests.support.MyKeyManagerFactorySpi;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>KeyManagerFactory</code> class constructors and methods.
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class KeyManagerFactory1Test extends TestCase {
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final String srvKeyManagerFactory = "KeyManagerFactory";
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static String defaultAlgorithm = null;
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static String defaultProviderName = null;
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static Provider defaultProvider = null;
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static boolean DEFSupported = false;
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final String NotSupportedMsg = "There is no suitable provider for KeyManagerFactory";
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final String[] invalidValues = SpiEngUtils.invalidValues;
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static String[] validValues = new String[3];
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        defaultAlgorithm = Security
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getProperty("ssl.KeyManagerFactory.algorithm");
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (defaultAlgorithm != null) {
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            defaultProvider = SpiEngUtils.isSupport(defaultAlgorithm,
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    srvKeyManagerFactory);
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            DEFSupported = (defaultProvider != null);
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            defaultProviderName = (DEFSupported ? defaultProvider.getName()
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    : null);
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            validValues[0] = defaultAlgorithm;
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            validValues[1] = defaultAlgorithm.toUpperCase();
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            validValues[2] = defaultAlgorithm.toLowerCase();
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected KeyManagerFactory[] createKMFac() {
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(defaultAlgorithm + " algorithm is not supported");
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactory[] kMF = new KeyManagerFactory[3];
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kMF[0] = KeyManagerFactory.getInstance(defaultAlgorithm);
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kMF[1] = KeyManagerFactory.getInstance(defaultAlgorithm,
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    defaultProvider);
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kMF[2] = KeyManagerFactory.getInstance(defaultAlgorithm,
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    defaultProviderName);
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return kMF;
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *  Test for <code>getDefaultAlgorithm()</code> method
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: returns value which is specifoed in security property
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetDefaultAlgorithm() {
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String def = KeyManagerFactory.getDefaultAlgorithm();
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (defaultAlgorithm == null) {
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull("DefaultAlgorithm must be null", def);
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Invalid default algorithm", def, defaultAlgorithm);
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String defA = "Proba.keymanagerfactory.defaul.type";
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Security.setProperty("ssl.KeyManagerFactory.algorithm", defA);
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect defaultAlgorithm",
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory.getDefaultAlgorithm(), defA);
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (def == null) {
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            def = "";
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Security.setProperty("ssl.KeyManagerFactory.algorithm", def);
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect defaultAlgorithm",
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory.getDefaultAlgorithm(), def);
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm)</code> method
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertions:
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * returns security property "ssl.KeyManagerFactory.algorithm";
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * returns instance of KeyManagerFactory
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory01() throws NoSuchAlgorithmException {
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactory keyMF;
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < validValues.length; i++) {
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keyMF = KeyManagerFactory.getInstance(validValues[i]);
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Not KeyManagerFactory object",
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    keyMF instanceof KeyManagerFactory);
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Invalid algorithm", keyMF.getAlgorithm(),
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    validValues[i]);
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm)</code> method
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion:
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws NullPointerException when algorithm is null;
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws NoSuchAlgorithmException when algorithm is not correct;
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory02() {
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            KeyManagerFactory.getInstance(null);
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null");
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchAlgorithmException e) {
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < invalidValues.length; i++) {
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory.getInstance(invalidValues[i]);
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("NoSuchAlgorithmException was not thrown as expected for algorithm: "
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .concat(invalidValues[i]));
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NoSuchAlgorithmException e) {
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm, String provider)</code>
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: throws IllegalArgumentException when provider is null or empty
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory03() throws NoSuchProviderException,
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NoSuchAlgorithmException {
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String provider = null;
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < validValues.length; i++) {
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory.getInstance(validValues[i], provider);
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Expected IllegalArgumentException was not thrown for null provider");
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory.getInstance(validValues[i], "");
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Expected IllegalArgumentException was not thrown for empty provider");
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm, String provider)</code>
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion:
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws NullPointerException when algorithm is null;
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws NoSuchAlgorithmException when algorithm is not correct;
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory04() throws NoSuchProviderException {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            KeyManagerFactory.getInstance(null, defaultProviderName);
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null");
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchAlgorithmException e) {
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < invalidValues.length; i++) {
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory.getInstance(invalidValues[i],
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        defaultProviderName);
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("NoSuchAlgorithmException must be thrown (algorithm: "
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .concat(invalidValues[i]).concat(")"));
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NoSuchAlgorithmException e) {
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm, String provider)</code>
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: throws NoSuchProviderException when provider has
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * invalid value
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory05() throws NoSuchAlgorithmException {
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < validValues.length; i++) {
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int j = 1; j < invalidValues.length; j++) {
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    KeyManagerFactory.getInstance(validValues[i],
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            invalidValues[j]);
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("NuSuchProviderException must be thrown (algorithm: "
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + validValues[i] + " provider: " + invalidValues[j]
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + ")");
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchProviderException e) {
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm, String provider)</code>
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method Assertion: returns instance of KeyManagerFactory
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory06() throws NoSuchProviderException,
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NoSuchAlgorithmException {
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactory kMF;
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < validValues.length; i++) {
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kMF = KeyManagerFactory.getInstance(validValues[i],
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    defaultProviderName);
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Not KeyManagerFactory object",
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    kMF instanceof KeyManagerFactory);
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect algorithm", kMF.getAlgorithm(),
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    validValues[i]);
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect provider", kMF.getProvider().getName(),
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    defaultProviderName);
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm, Provider provider)</code>
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: throws IllegalArgumentException when provider is null
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory07() throws NoSuchAlgorithmException {
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Provider provider = null;
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < validValues.length; i++) {
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory.getInstance(validValues[i], provider);
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Expected IllegalArgumentException was not thrown when provider is null");
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm, Provider provider)</code>
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion:
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws NullPointerException when algorithm is null;
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws NoSuchAlgorithmException when algorithm is not correct;
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory08() {
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            KeyManagerFactory.getInstance(null, defaultProvider);
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null");
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchAlgorithmException e) {
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < invalidValues.length; i++) {
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyManagerFactory
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .getInstance(invalidValues[i], defaultProvider);
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Expected NuSuchAlgorithmException was not thrown");
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NoSuchAlgorithmException e) {
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getInstance(String algorithm, Provider provider)</code>
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: returns instance of KeyManagerFactory
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory09() throws NoSuchAlgorithmException,
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            IllegalArgumentException {
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactory kMF;
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < validValues.length; i++) {
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kMF = KeyManagerFactory
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .getInstance(validValues[i], defaultProvider);
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(kMF instanceof KeyManagerFactory);
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(kMF.getAlgorithm(), validValues[i]);
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(kMF.getProvider(), defaultProvider);
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>KeyManagerFactory</code> constructor
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: returns KeyManagerFactory object
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory10() throws Exception {
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactorySpi spi = new MyKeyManagerFactorySpi();
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactory keyMF = new myKeyManagerFactory(spi, defaultProvider,
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                defaultAlgorithm);
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Not CertStore object", keyMF instanceof KeyManagerFactory);
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect algorithm", keyMF.getAlgorithm(),
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                defaultAlgorithm);
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect provider", keyMF.getProvider(), defaultProvider);
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keyMF.init(null, new char[1]);
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("UnrecoverableKeyException must be thrown");
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnrecoverableKeyException e) {
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyMF = new myKeyManagerFactory(null, null, null);
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Not CertStore object", keyMF instanceof KeyManagerFactory);
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Aalgorithm must be null", keyMF.getAlgorithm());
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Provider must be null", keyMF.getProvider());
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keyMF.getKeyManagers();
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>init(KeyStore keyStore, char[] password)</code> and
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>getKeyManagers()</code>
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: returns not empty KeyManager array
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory11() throws Exception {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactory[] keyMF = createKMFac();
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull("KeyManagerFactory object were not created", keyMF);
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore ksNull = null;
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManager[] km;
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keyMF.length; i++) {
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keyMF[i].init(ksNull, new char[10]);
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            km = keyMF[i].getKeyManagers();
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull("Result should not be null", km);
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Length of result KeyManager array should not be 0",
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    (km.length > 0));
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore ks;
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ks = KeyStore.getInstance(KeyStore.getDefaultType());
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ks.load(null, null);
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keyMF.length; i++) {
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                keyMF[i].init(ks, new char[10]);
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (KeyStoreException e) {
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            km = keyMF[i].getKeyManagers();
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull("Result has not be null", km);
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Length of result KeyManager array should not be 0",
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    (km.length > 0));
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>init(ManagerFactoryParameters params)</code>
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion:
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws InvalidAlgorithmParameterException when params is null
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testKeyManagerFactory12() throws NoSuchAlgorithmException {
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!DEFSupported) {
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(NotSupportedMsg);
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ManagerFactoryParameters par = null;
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyManagerFactory[] keyMF = createKMFac();
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull("KeyManagerFactory object were not created", keyMF);
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keyMF.length; i++) {
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                keyMF[i].init(par);
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("InvalidAlgorithmParameterException must be thrown");
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (InvalidAlgorithmParameterException e) {
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Additional class for KeyManagerFactory constructor verification
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesclass myKeyManagerFactory extends KeyManagerFactory {
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public myKeyManagerFactory(KeyManagerFactorySpi spi, Provider prov,
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String alg) {
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super(spi, prov, alg);
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
440