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 Project/** 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @author Vera Y. Petrashkova 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @version $Revision$ 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/ 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.security.tests.java.security; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.AlgorithmParameterGenerator; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.AlgorithmParameterGeneratorSpi; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.AlgorithmParameters; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SecureRandom; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.AlgorithmParameterSpec; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.MyAlgorithmParameterGeneratorSpi; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.SpiEngUtils; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 39229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>AlgorithmParameterGenerator</code> class constructors and 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * methods. 43f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class AlgorithmParameterGenerator1Test extends TestCase { 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String[] invalidValues = SpiEngUtils.invalidValues; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String validAlgName = "DSA"; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String[] algs = { 50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes "DSA", "dsa", "Dsa", "DsA", "dsA" }; 51f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final String srvAlgorithmParameterGenerator = "AlgorithmParameterGenerator"; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String validProviderName = null; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Provider validProvider = null; 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static boolean DSASupported = false; 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProvider = SpiEngUtils.isSupport( 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validAlgName, 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project srvAlgorithmParameterGenerator); 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DSASupported = (validProvider != null); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProviderName = (DSASupported ? validProvider.getName() : null); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected AlgorithmParameterGenerator[] createAPGen() { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator[] apg = new AlgorithmParameterGenerator[3]; 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg[0] = AlgorithmParameterGenerator.getInstance(validAlgName); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg[1] = AlgorithmParameterGenerator.getInstance(validAlgName, 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProvider); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg[2] = AlgorithmParameterGenerator.getInstance(validAlgName, 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProviderName); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return apg; 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 90f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException must be thrown is null 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException must be thrown if algorithm is not available 93f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator01() 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(null); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown"); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(invalidValues[i]); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException should be thrown"); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 114f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: returns AlgorithmParameterGenerator instance 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when algorithm is DSA 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator02() 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator apg; 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < algs.length; i++) { 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg = AlgorithmParameterGenerator.getInstance(algs[i]); 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", apg.getAlgorithm(), algs[i]); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 132f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 133f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws IllegalArgumentException if provider is null or empty 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator03() 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String provider = null; 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < algs.length; i++) { 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(algs[i], provider); 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null"); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(algs[i], ""); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is empty"); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws NoSuchProviderException if provider is not 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * available 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator04() 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < algs.length; i++) { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(algs[i], 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[j]); 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchProviderException must be thrown (provider: " 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[j])); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 184f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 185f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException must be thrown is null 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException must be thrown if algorithm is not available 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator05() 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchProviderException { 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(null, validProviderName); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown"); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(invalidValues[i], 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProviderName); 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown when (algorithm: " 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i].concat(")"))); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: return AlgorithmParameterGenerator 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator06() 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator apg; 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < algs.length; i++) { 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg = AlgorithmParameterGenerator.getInstance(algs[i], 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProviderName); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", algs[i], apg.getAlgorithm()); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", apg.getProvider().getName(), 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProviderName); 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 235f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws IllegalArgumentException when provider is null 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator07() 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider provider = null; 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < algs.length; i++) { 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(algs[i], provider); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null"); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 256f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 257f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException must be thrown is null 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException must be thrown if algorithm is not available 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator08() { 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(null, validProvider); 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown"); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(invalidValues[i], 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProvider); 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 285f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns AlgorithmParameterGenerator object 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator09() 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator apg; 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < algs.length; i++) { 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg = AlgorithmParameterGenerator.getInstance(algs[i], 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validProvider); 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", apg.getAlgorithm(), algs[i]); 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", apg.getProvider(), validProvider); 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>generateParameters()</code> method 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns AlgorithmParameters object 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator10() 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator apg = AlgorithmParameterGenerator 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInstance(validAlgName); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg.init(512); 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = apg.generateParameters(); 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", ap.getAlgorithm().toUpperCase(), 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg.getAlgorithm().toUpperCase()); 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 320f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for <code>init(AlgorithmParameterSpec param)</code> and 323f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * <code>init(AlgorithmParameterSpec param, SecureRandom random<code> 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * methods 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws InvalidAlgorithmParameterException when param is null 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParameterGenerator12() { 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SecureRandom random = new SecureRandom(); 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterSpec aps = null; 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator[] apgs = createAPGen(); 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("AlgorithmParameterGenerator objects were not created", 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apgs); 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < apgs.length; i++) { 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apgs[i].init(aps); 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("InvalidAlgorithmParameterException expected for null argument."); 341f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } catch (InvalidAlgorithmParameterException e) { 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 344f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apgs[i].init(aps, random); 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("InvalidAlgorithmParameterException expected for null argument."); 348f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } catch (InvalidAlgorithmParameterException e) { 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 351f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 353f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 355f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for <code>AlgorithmParameterGenerator</code> constructor 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns AlgorithmParameterGenerator object 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testConstructor() throws NoSuchAlgorithmException { 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!DSASupported) { 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(validAlgName + " algorithm is not supported"); 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGeneratorSpi spi = new MyAlgorithmParameterGeneratorSpi(); 364f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes AlgorithmParameterGenerator apg = 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new myAlgPG(spi, validProvider, validAlgName); 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", apg.getAlgorithm(), validAlgName); 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider",apg.getProvider(),validProvider); 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg.init(-10, null); 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown"); 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 373f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg = new myAlgPG(null, null, null); 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Incorrect algorithm", apg.getAlgorithm()); 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Incorrect provider", apg.getProvider()); 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apg.init(-10, null); 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException must be thrown"); 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Additional class to verify AlgorithmParameterGenerator constructor 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectclass myAlgPG extends AlgorithmParameterGenerator { 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public myAlgPG(AlgorithmParameterGeneratorSpi spi, Provider prov, String alg) { 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(spi, prov, alg); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 392