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