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.KeyManagerFactory; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.ManagerFactoryParameters; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.xnet.tests.support.SpiEngUtils; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.xnet.tests.support.MyKeyManagerFactorySpi; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for KeyManagerFactory class constructors and methods 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class KeyManagerFactory2Test extends TestCase { 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String srvKeyManagerFactory = "KeyManagerFactory"; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String defaultAlg = "KeyMF"; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String KeyManagerFactoryProviderClass = "org.apache.harmony.xnet.tests.support.MyKeyManagerFactorySpi"; 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String[] invalidValues = SpiEngUtils.invalidValues; 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String[] validValues; 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static { 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues = new String[4]; 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[0] = defaultAlg; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[1] = defaultAlg.toLowerCase(); 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[2] = "Keymf"; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[3] = "kEYMF"; 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Provider mProv; 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mProv = (new SpiEngUtils()).new MyProvider("MyKMFProvider", 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Provider for testing", srvKeyManagerFactory.concat(".") 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(defaultAlg), KeyManagerFactoryProviderClass); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Security.insertProviderAt(mProv, 2); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see TestCase#tearDown() 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Security.removeProvider(mProv.getName()); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void checkResult(KeyManagerFactory keyMF) 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Exception { 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyStore kStore = null; 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ManagerFactoryParameters mfp = null; 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] pass = { 'a', 'b', 'c' }; 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF.init(kStore, null); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("KeyStoreException must be thrown"); 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (KeyStoreException e) { 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF.init(kStore, pass); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("UnrecoverableKeyException must be thrown"); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnrecoverableKeyException e) { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF.init(mfp); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("InvalidAlgorithmParameterException must be thrown"); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidAlgorithmParameterException e) { 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("getKeyManagers() should return null object", keyMF 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getKeyManagers()); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kStore = KeyStore.getInstance(KeyStore.getDefaultType()); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kStore.load(null, null); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (KeyStoreException e) { 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("default keystore is not supported"); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF.init(kStore, pass); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mfp = (ManagerFactoryParameters) new MyKeyManagerFactorySpi.Parameters(kStore, null); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF.init(mfp); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("InvalidAlgorithmParameterException must be thrown"); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidAlgorithmParameterException e) { 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mfp = (ManagerFactoryParameters) new MyKeyManagerFactorySpi.Parameters(kStore, pass); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF.init(mfp); 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getInstance(String algorithm)</code> method 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NullPointerException when algorithm is null; 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchAlgorithmException when algorithm is not correct; 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returns KeyManagerFactory object 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetInstance01() throws Exception { 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(null); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < invalidValues.length; i++) { 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(invalidValues[i]); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException must be thrown (algorithm: " 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory keyMF; 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF = KeyManagerFactory.getInstance(validValues[i]); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not instanceof KeyManagerFactory object", 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF instanceof KeyManagerFactory); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect algorithm", keyMF.getAlgorithm(), 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[i]); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect provider", keyMF.getProvider(), mProv); 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes checkResult(keyMF); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getInstance(String algorithm, String provider)</code> 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * method 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NullPointerException when algorithm is null; 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchAlgorithmException when algorithm is not correct; 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws IllegalArgumentException when provider is null or empty; 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchProviderException when provider is available; 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returns KeyManagerFactory object 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetInstance02() throws Exception { 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(null, mProv.getName()); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < invalidValues.length; i++) { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(invalidValues[i], mProv.getName()); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException must be thrown (algorithm: " 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String prov = null; 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(validValues[i], prov); 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(validValues[i], ""); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown when provider is empty (algorithm: " 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j = 1; j < invalidValues.length; j++) { 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(validValues[i], 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes invalidValues[j]); 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchProviderException must be thrown (algorithm: " 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(" provider: ") 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[j]).concat(")")); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchProviderException e) { 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory keyMF; 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF = KeyManagerFactory.getInstance(validValues[i], mProv 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getName()); 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not instanceof KeyManagerFactory object", 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF instanceof KeyManagerFactory); 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect algorithm", keyMF.getAlgorithm(), 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[i]); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect provider", keyMF.getProvider().getName(), 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mProv.getName()); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes checkResult(keyMF); 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getInstance(String algorithm, Provider provider)</code> 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * method 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NullPointerException when algorithm is null; 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchAlgorithmException when algorithm is not correct; 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws IllegalArgumentException when provider is null; 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returns KeyManagerFactory object 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetInstance03() throws Exception { 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(null, mProv); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < invalidValues.length; i++) { 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(invalidValues[i], mProv); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException must be thrown (algorithm: " 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Provider prov = null; 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory.getInstance(validValues[i], prov); 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagerFactory keyMF; 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF = KeyManagerFactory.getInstance(validValues[i], mProv); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not instanceof KeyManagerFactory object", 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyMF instanceof KeyManagerFactory); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect algorithm", keyMF.getAlgorithm(), 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[i]); 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect provider", keyMF.getProvider(), mProv); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes checkResult(keyMF); 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}