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.AlgorithmParameters; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SecureRandom; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 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.SpiEngUtils; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 38229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>AlgorithmParameterGenerator</code> class constructors and 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * methods. 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class AlgorithmParameterGenerator2Test extends TestCase { 44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String AlgorithmParameterGeneratorProviderClass = "org.apache.harmony.security.tests.support.MyAlgorithmParameterGeneratorSpi"; 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String defaultAlg = "APG"; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] invalidValues = SpiEngUtils.invalidValues; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] validValues; 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues = new String[4]; 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[0] = defaultAlg; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[1] = defaultAlg.toLowerCase(); 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[2] = "apG"; 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[3] = "ApG"; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider mProv; 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 65f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes mProv = (new SpiEngUtils()).new MyProvider("MyAPGProvider", "Testing provider", 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator1Test.srvAlgorithmParameterGenerator.concat(".").concat(defaultAlg), 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGeneratorProviderClass); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.insertProviderAt(mProv, 1); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see TestCase#tearDown() 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(mProv.getName()); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes private void checkResult(AlgorithmParameterGenerator algParGen) 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidAlgorithmParameterException { 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters param = algParGen.generateParameters(); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Not null parameters", param); 83f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterSpec pp = null; 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(pp, new SecureRandom()); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(pp); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(pp, null); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown"); 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pp = new tmpAlgorithmParameterSpec("Proba"); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(pp, new SecureRandom()); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(pp); 95f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(0, null); 97f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes algParGen.init(0, new SecureRandom()); 98f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(-10, null); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown"); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project algParGen.init(-10, new SecureRandom()); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown"); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertions: 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException must be thrown is null 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException must be thrown if algorithm is not available 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns AlgorithmParameterGenerator object 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance01() throws NoSuchAlgorithmException, 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvalidAlgorithmParameterException { 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(null); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown"); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(invalidValues[i]); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator apG; 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apG = AlgorithmParameterGenerator.getInstance(validValues[i]); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", apG.getAlgorithm(), 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", apG.getProvider(), mProv); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(apG); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method 146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertions: 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException must be thrown is null 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException must be thrown if algorithm is not available 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws IllegalArgumentException when provider is null; 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchProviderException when provider is available; 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns AlgorithmParameterGenerator object 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance02() throws NoSuchAlgorithmException, 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchProviderException, IllegalArgumentException, 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvalidAlgorithmParameterException { 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(null, mProv.getName()); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown"); 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(invalidValues[i], mProv 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String prov = null; 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(validValues[i], prov); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(validValues[i], 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[j]); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchProviderException must be thrown (algorithm: " 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(" provider: ") 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[j]).concat(")")); 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator apG; 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apG = AlgorithmParameterGenerator.getInstance(validValues[i], mProv 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", apG.getAlgorithm(), 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", apG.getProvider().getName(), 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mProv.getName()); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(apG); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertions: 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException must be thrown is null 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException must be thrown if algorithm is not available 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws IllegalArgumentException when provider is null; 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns AlgorithmParameterGenerator object 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance03() throws NoSuchAlgorithmException, 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IllegalArgumentException, 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvalidAlgorithmParameterException { 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(null, mProv); 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown"); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(invalidValues[i], mProv); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider prov = null; 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator.getInstance(validValues[i], prov); 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGenerator apG; 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project apG = AlgorithmParameterGenerator.getInstance(validValues[i], mProv); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", apG.getAlgorithm(), 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", apG.getProvider(), mProv); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(apG); 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Additional class for init(...) methods verification 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class tmpAlgorithmParameterSpec implements AlgorithmParameterSpec { 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final String type; 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public tmpAlgorithmParameterSpec(String type) { 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.type = type; 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getType() { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return type; 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 261