1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.net.ssl; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStoreException; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.UnrecoverableKeyException; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateException; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.KeyStoreBuilderParameters; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.ManagerFactoryParameters; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.KeyManager; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.KeyManagerFactory; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.KeyManagerFactorySpi; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.SpiEngUtils; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.xnet.tests.support.MyKeyManagerFactorySpi; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>KeyManagerFactory</code> class constructors and methods. 44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class KeyManagerFactory1Test extends TestCase { 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String srvKeyManagerFactory = "KeyManagerFactory"; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String defaultAlgorithm = null; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String defaultProviderName = null; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Provider defaultProvider = null; 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static boolean DEFSupported = false; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String NotSupportedMsg = "There is no suitable provider for KeyManagerFactory"; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] invalidValues = SpiEngUtils.invalidValues; 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String[] validValues = new String[3]; 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultAlgorithm = Security 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProperty("ssl.KeyManagerFactory.algorithm"); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (defaultAlgorithm != null) { 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider = SpiEngUtils.isSupport(defaultAlgorithm, 68f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes srvKeyManagerFactory); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DEFSupported = (defaultProvider != null); 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName = (DEFSupported ? defaultProvider.getName() 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project : null); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[0] = defaultAlgorithm; 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[1] = defaultAlgorithm.toUpperCase(); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[2] = defaultAlgorithm.toLowerCase(); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected KeyManagerFactory[] createKMFac() { 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(defaultAlgorithm + " algorithm is not supported"); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory[] kMF = new KeyManagerFactory[3]; 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kMF[0] = KeyManagerFactory.getInstance(defaultAlgorithm); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kMF[1] = KeyManagerFactory.getInstance(defaultAlgorithm, 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider); 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kMF[2] = KeyManagerFactory.getInstance(defaultAlgorithm, 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName); 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return kMF; 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 98229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * avax.net.ssl.KeyManagerFactory#getAlgorithm() 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getAlgorithm() 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) fail(NotSupportedMsg); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultAlgorithm, 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInstance(defaultAlgorithm).getAlgorithm()); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultAlgorithm, 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInstance(defaultAlgorithm, defaultProviderName) 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getAlgorithm()); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultAlgorithm, 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(defaultAlgorithm, defaultProvider) 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getAlgorithm()); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getDefaultAlgorithm()</code> method 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns value which is specifoed in security property 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getDefaultAlgorithm() { 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String def = KeyManagerFactory.getDefaultAlgorithm(); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (defaultAlgorithm == null) { 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("DefaultAlgorithm must be null", def); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Invalid default algorithm", def, defaultAlgorithm); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String defA = "Proba.keymanagerfactory.defaul.type"; 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.setProperty("ssl.KeyManagerFactory.algorithm", defA); 135f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertEquals("Incorrect defaultAlgorithm", 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getDefaultAlgorithm(), defA); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (def == null) { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project def = ""; 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 140f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes Security.setProperty("ssl.KeyManagerFactory.algorithm", def); 141f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertEquals("Incorrect defaultAlgorithm", 142f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes KeyManagerFactory.getDefaultAlgorithm(), def); 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 147f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertions: 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns security property "ssl.KeyManagerFactory.algorithm"; 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns instance of KeyManagerFactory 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_String01() throws NoSuchAlgorithmException { 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory keyMF; 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyMF = KeyManagerFactory.getInstance(validValues[i]); 159be25811712488827cf836ee6170eca8fb4e14fe4Urs Grob assertNotNull("No KeyManagerFactory created", keyMF); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Invalid algorithm", keyMF.getAlgorithm(), 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 166f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for <code>getInstance(String algorithm)</code> method 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_String02() { 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(null); 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(invalidValues[i]); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException was not thrown as expected for algorithm: " 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i])); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 190f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws IllegalArgumentException when provider is null or empty 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_lang_String01() throws NoSuchProviderException, 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchAlgorithmException { 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String provider = null; 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(validValues[i], provider); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Expected IllegalArgumentException was not thrown for null provider"); 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(validValues[i], ""); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Expected IllegalArgumentException was not thrown for empty provider"); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 216f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_lang_String02() throws NoSuchProviderException { 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(null, defaultProviderName); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(invalidValues[i], 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 245f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws NoSuchProviderException when provider has 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * invalid value 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_lang_String03() 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(validValues[i], 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[j]); 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NuSuchProviderException must be thrown (algorithm: " 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + validValues[i] + " provider: " + invalidValues[j] 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + ")"); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method Assertion: returns instance of KeyManagerFactory 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_lang_String04() 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchProviderException, 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchAlgorithmException { 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory kMF; 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kMF = KeyManagerFactory.getInstance(validValues[i], 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName); 284be25811712488827cf836ee6170eca8fb4e14fe4Urs Grob assertNotNull("No KeyManagerFactory created", kMF); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", kMF.getAlgorithm(), 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", kMF.getProvider().getName(), 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName); 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 294f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws IllegalArgumentException when provider is null 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_security_Provider01() 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider provider = null; 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(validValues[i], provider); 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Expected IllegalArgumentException was not thrown when provider is null"); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 315f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 316f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_security_Provider02() { 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 324f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(null, defaultProvider); 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInstance(invalidValues[i], defaultProvider); 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Expected NuSuchAlgorithmException was not thrown"); 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 338f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 343f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns instance of KeyManagerFactory 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_security_Provider03() 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IllegalArgumentException { 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory kMF; 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kMF = KeyManagerFactory 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInstance(validValues[i], defaultProvider); 357be25811712488827cf836ee6170eca8fb4e14fe4Urs Grob assertNotNull("No KeyManagerFactory created", kMF); 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(kMF.getAlgorithm(), validValues[i]); 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(kMF.getProvider(), defaultProvider); 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 364f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for <code>KeyManagerFactory</code> constructor 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns KeyManagerFactory object 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 367051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann public void test_Constructor() throws NoSuchAlgorithmException { 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactorySpi spi = new MyKeyManagerFactorySpi(); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory keyMF = new myKeyManagerFactory(spi, defaultProvider, 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultAlgorithm); 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", keyMF.getAlgorithm(), 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultAlgorithm); 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", keyMF.getProvider(), defaultProvider); 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyMF.init(null, new char[1]); 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("UnrecoverableKeyException must be thrown"); 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableKeyException e) { 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected: "+e.toString()+" was thrown"); 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyMF = new myKeyManagerFactory(null, null, null); 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Aalgorithm must be null", keyMF.getAlgorithm()); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Provider must be null", keyMF.getProvider()); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyMF.getKeyManagers(); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 395229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * avax.net.ssl.KeyManagerFactory#getKeyManagers() 396f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws NoSuchAlgorithmException 397f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws KeyStoreException 398f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 399f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws CertificateException 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnrecoverableKeyException 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getKeyManagers() 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws Exception { 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) fail(NotSupportedMsg); 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory kmf = KeyManagerFactory.getInstance(defaultAlgorithm); 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] pass = "password".toCharArray(); 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kmf.init(null, pass); 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Key manager array is null", kmf.getKeyManagers()); 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect size of array", 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1, kmf.getKeyManagers().length); 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 412f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 414229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * avax.net.ssl.KeyManagerFactory#getProvider() 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getProvider() 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws Exception { 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) fail(NotSupportedMsg); 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider, 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInstance(defaultAlgorithm).getProvider()); 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider, 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInstance(defaultAlgorithm, defaultProviderName) 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProvider()); 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider, 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory.getInstance(defaultAlgorithm, defaultProvider) 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProvider()); 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>init(KeyStore keyStore, char[] password)</code> and 436f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * <code>getKeyManagers()</code> 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns not empty KeyManager array 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_initLjava_security_KeyStore$C() 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStoreException, UnrecoverableKeyException { 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory[] keyMF = createKMFac(); 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("KeyManagerFactory object were not created", keyMF); 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore ksNull = null; 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManager[] km; 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < keyMF.length; i++) { 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyMF[i].init(ksNull, new char[10]); 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project km = keyMF[i].getKeyManagers(); 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Result should not be null", km); 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Length of result KeyManager array should not be 0", 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (km.length > 0)); 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore ks; 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ks = KeyStore.getInstance(KeyStore.getDefaultType()); 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ks.load(null, null); 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(e.toString() + "default KeyStore type is not supported"); 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected: " + e.toString()); 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < keyMF.length; i++) { 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyMF[i].init(ks, new char[10]); 471f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } catch (KeyStoreException e) { 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project km = keyMF[i].getKeyManagers(); 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Result has not be null", km); 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Length of result KeyManager array should not be 0", 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (km.length > 0)); 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 478f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 482f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for <code>init(ManagerFactoryParameters params)</code> 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws InvalidAlgorithmParameterException when params is null 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_initLjavax_net_ssl_ManagerFactoryParameters() 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DEFSupported) { 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportedMsg); 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ManagerFactoryParameters par = null; 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory[] keyMF = createKMFac(); 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("KeyManagerFactory object were not created", keyMF); 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < keyMF.length; i++) { 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyMF[i].init(par); 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("InvalidAlgorithmParameterException must be thrown"); 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 503f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.ProtectionParameter pp = new ProtectionParameterImpl(); 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.Builder bld = KeyStore.Builder.newInstance("testType", null, pp); 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Null object KeyStore.Builder", bld); 507f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyManagerFactory kmf = KeyManagerFactory.getInstance(defaultAlgorithm); 510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStoreBuilderParameters ksp = new KeyStoreBuilderParameters(bld); 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(ksp.getParameters()); 512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kmf.init(ksp); 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("InvalidAlgorithmParameterException must be thrown"); 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 517f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Additional class for KeyManagerFactory constructor verification 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectclass myKeyManagerFactory extends KeyManagerFactory { 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public myKeyManagerFactory(KeyManagerFactorySpi spi, Provider prov, 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String alg) { 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(spi, prov, alg); 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectclass ProtectionParameterImpl implements KeyStore.ProtectionParameter { 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ProtectionParameterImpl(){} 532229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom} 533