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