1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Boris V. Kuznetsov
208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.math.BigInteger;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AlgorithmParameters;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AlgorithmParametersSpi;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Provider;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Security;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.AlgorithmParameterSpec;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.DSAParameterSpec;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.InvalidParameterSpecException;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>AlgorithmParameters</code> class constructors and
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * methods.
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class AlgorithmParametersTest extends TestCase {
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /**
448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * Provider
458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     */
468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    Provider p;
478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * @see TestCase#setUp()
508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    protected void setUp() throws Exception {
528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super.setUp();
538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        p = new MyProvider();
548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Security.insertProviderAt(p, 1);
558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * @see TestCase#tearDown()
598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    protected void tearDown() throws Exception {
618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super.tearDown();
628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Security.removeProvider(p.getName());
638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getAlgorithm()
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getAlgorithm() throws Exception {
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: null value
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters ap = new DummyAlgorithmParameters(null, p, null);
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(ap.getAlgorithm());
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: not null value
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ap = new DummyAlgorithmParameters(null, p, "AAA");
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("AAA", ap.getAlgorithm());
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getEncoded()
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getEncoded() throws Exception {
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final byte[] enc = new byte[] { 0x02, 0x01, 0x03 };
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected byte[] engineGetEncoded() throws IOException {
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return enc;
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p,
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "algorithm");
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: IOException if not initialized
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.getEncoded();
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should not get encoded from un-initialized instance");
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: corresponding spi method is invoked
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new MyAlgorithmParameterSpec());
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(enc, params.getEncoded());
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getEncoded(String)
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getEncodedLjava_lang_String() throws Exception {
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final byte[] enc = new byte[] { 0x02, 0x01, 0x03 };
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final String strFormatParam = "format";
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() {
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected byte[] engineGetEncoded(String format) throws IOException {
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(strFormatParam, format);
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return enc;
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p,
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "algorithm");
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: IOException if not initialized
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.getEncoded(strFormatParam);
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should not get encoded from un-initialized instance");
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: corresponding spi method is invoked
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new MyAlgorithmParameterSpec());
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(enc, params.getEncoded(strFormatParam));
1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: if format param is null
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-2680
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        paramSpi = new MyAlgorithmParameters() {
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected byte[] engineGetEncoded(String format) throws IOException {
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(format); // null is passed to spi-provider
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return enc;
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new MyAlgorithmParameterSpec());
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(enc, params.getEncoded(null));
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /**
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getInstance(String)
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstanceLjava_lang_String() throws Exception {
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC");
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkUnititialized(ap);
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ap.init(new MyAlgorithmParameterSpec());
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkAP(ap, p);
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getInstance(String, String)
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstanceLjava_lang_StringLjava_lang_String()
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws Exception {
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC",
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "MyProvider");
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkUnititialized(ap);
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ap.init(new byte[6]);
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkAP(ap, p);
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getParameterSpec(Class)
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getParameterSpecLjava_lang_Class() throws Exception {
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final MyAlgorithmParameterSpec myParamSpec = new MyAlgorithmParameterSpec();
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() {
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected AlgorithmParameterSpec engineGetParameterSpec(
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    Class paramSpec) {
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return myParamSpec;
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p,
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "algorithm");
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: InvalidParameterSpecException if not initialized
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.getParameterSpec(null);
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected InvalidParameterSpecException");
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (InvalidParameterSpecException e) {
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.getParameterSpec(MyAlgorithmParameterSpec.class);
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected InvalidParameterSpecException");
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (InvalidParameterSpecException e) {
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: corresponding spi method is invoked
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new MyAlgorithmParameterSpec());
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(myParamSpec, params
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getParameterSpec(MyAlgorithmParameterSpec.class));
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: if paramSpec is null
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-2733
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        paramSpi = new MyAlgorithmParameters() {
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected AlgorithmParameterSpec engineGetParameterSpec(
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    Class paramSpec) {
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(paramSpec); // null is passed to spi-provider
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return null;
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new MyAlgorithmParameterSpec());
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(params.getParameterSpec(null));
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getInstance(String, Provider)
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstanceLjava_lang_StringLjava_security_Provider()
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws Exception {
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC", p);
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkUnititialized(ap);
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ap.init(new byte[6], "aaa");
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkAP(ap, p);
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#getProvider()
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getProvider() throws Exception {
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: null value
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters ap = new DummyAlgorithmParameters(null, null, "AAA");
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(ap.getProvider());
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: not null value
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ap = new DummyAlgorithmParameters(null, p, "AAA");
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(p, ap.getProvider());
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#init(java.security.spec.AlgorithmParameterSpec)
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_initLjava_security_spec_AlgorithmParameterSpec()
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws Exception {
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: corresponding spi method is invoked
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final MyAlgorithmParameterSpec spec = new MyAlgorithmParameterSpec();
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() {
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected void engineInit(AlgorithmParameterSpec paramSpec)
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    throws InvalidParameterSpecException {
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertSame(spec, paramSpec);
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                runEngineInit_AlgParamSpec = true;
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p,
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "algorithm");
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(spec);
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(paramSpi.runEngineInit_AlgParamSpec);
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: InvalidParameterSpecException if already initialized
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(spec);
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected InvalidParameterSpecException");
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (InvalidParameterSpecException e) {
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new byte[0]);
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(spec);
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected InvalidParameterSpecException");
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (InvalidParameterSpecException e) {
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new byte[0], "format");
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(spec);
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected InvalidParameterSpecException");
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (InvalidParameterSpecException e) {
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: if paramSpec is null
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        paramSpi = new MyAlgorithmParameters() {
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected void engineInit(AlgorithmParameterSpec paramSpec)
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    throws InvalidParameterSpecException {
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(paramSpec);// null is passed to spi-provider
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                runEngineInit_AlgParamSpec = true;
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init((AlgorithmParameterSpec) null);
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(paramSpi.runEngineInit_AlgParamSpec);
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#init(byte[])
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_init$B() throws Exception {
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: corresponding spi method is invoked
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final byte[] enc = new byte[] { 0x02, 0x01, 0x03 };
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() {
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected void engineInit(byte[] params) throws IOException {
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                runEngineInitB$ = true;
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertSame(enc, params);
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p,
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "algorithm");
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(enc);
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(paramSpi.runEngineInitB$);
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: IOException if already initialized
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(enc);
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected IOException");
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new MyAlgorithmParameterSpec());
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(enc);
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected IOException");
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(enc, "format");
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(enc);
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected IOException");
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: if params is null
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        paramSpi = new MyAlgorithmParameters() {
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected void engineInit(byte[] params) throws IOException {
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                runEngineInitB$ = true;
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(params); // null is passed to spi-provider
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init((byte[]) null);
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(paramSpi.runEngineInitB$);
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
4178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * @tests java.security.AlgorithmParameters#init(byte[], String)
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_init$BLjava_lang_String() throws Exception {
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: corresponding spi method is invoked
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final byte[] enc = new byte[] { 0x02, 0x01, 0x03 };
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final String strFormatParam = "format";
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() {
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected void engineInit(byte[] params, String format)
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    throws IOException {
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                runEngineInitB$String = true;
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertSame(enc, params);
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertSame(strFormatParam, format);
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p,
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "algorithm");
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(enc, strFormatParam);
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(paramSpi.runEngineInitB$String);
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: IOException if already initialized
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(enc, strFormatParam);
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected IOException");
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new MyAlgorithmParameterSpec());
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(enc, strFormatParam);
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected IOException");
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(enc);
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(enc, strFormatParam);
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected IOException");
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: if params and format are null
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-2724
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        paramSpi = new MyAlgorithmParameters() {
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected void engineInit(byte[] params, String format)
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    throws IOException {
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                runEngineInitB$String = true;
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // null is passed to spi-provider
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(params);
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(format);
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = new DummyAlgorithmParameters(paramSpi, p, "algorithm");
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(null, null);
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(paramSpi.runEngineInitB$String);
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.AlgorithmParameters#toString()
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toString() throws Exception {
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final String str = "AlgorithmParameters";
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() {
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            protected String engineToString() {
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return str;
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p,
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "algorithm");
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("unititialized", params.toString());
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new byte[0]);
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(str, params.toString());
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests DSA AlgorithmParameters provider
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testDSAProvider() throws Exception {
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = AlgorithmParameters.getInstance("DSA");
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Algorithm", "DSA", params.getAlgorithm());
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // init(AlgorithmParameterSpec)
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger p = BigInteger.ONE;
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger q = BigInteger.TEN;
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger g = BigInteger.ZERO;
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(new DSAParameterSpec(p, q, g));
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // getEncoded() and getEncoded(String) (TODO verify returned encoding)
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] enc = params.getEncoded();
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(enc);
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(params.getEncoded("ASN.1"));
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // TODO assertNotNull(params.getEncoded(null)); // HARMONY-2680
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // getParameterSpec(Class)
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DSAParameterSpec spec = params.getParameterSpec(DSAParameterSpec.class);
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("p is wrong ", p, spec.getP());
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("q is wrong ", q, spec.getQ());
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("g is wrong ", g, spec.getG());
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // init(byte[])
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = AlgorithmParameters.getInstance("DSA");
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(enc);
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("param encoded is different", Arrays.equals(enc, params
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getEncoded()));
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // init(byte[], String)
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = AlgorithmParameters.getInstance("DSA");
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params.init(enc, "ASN.1");
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("param encoded is different", Arrays.equals(enc, params
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getEncoded()));
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        params = AlgorithmParameters.getInstance("DSA");
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            params.init(enc, "DOUGLASMAWSON");
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("unsupported format should have raised IOException");
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests OAEP AlgorithmParameters provider
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testOAEPProvider() throws Exception {
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        AlgorithmParameters params = AlgorithmParameters.getInstance("OAEP");
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Algorithm", "OAEP", params.getAlgorithm());
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
5728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    private void checkUnititialized(AlgorithmParameters ap) {
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Uninitialized: toString() failed", ap.toString());
5748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
5758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
5768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    private void checkAP(AlgorithmParameters ap, Provider p) throws Exception {
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame("getProvider() failed", p, ap.getProvider());
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("getAlgorithm() failed", "ABC", ap.getAlgorithm());
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("AlgorithmParameters", ap.toString());
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("toString() failed", MyAlgorithmParameters.runEngineToString);
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("serial")
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private class MyProvider extends Provider {
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyProvider() {
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            super("MyProvider", 1.0, "Provider for testing");
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            put("AlgorithmParameters.ABC", MyAlgorithmParameters.class
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .getName());
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MyProvider(String name, double version, String info) {
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            super(name, version, info);
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
5988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    private class MyAlgorithmParameterSpec implements java.security.spec.AlgorithmParameterSpec {
5998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
6008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
6018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    private class DummyAlgorithmParameters extends AlgorithmParameters {
6028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public DummyAlgorithmParameters(AlgorithmParametersSpi paramSpi,
6038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                Provider provider, String algorithm) {
6048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            super(paramSpi, provider, algorithm);
6058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
6068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
6078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public static class MyAlgorithmParameters extends AlgorithmParametersSpi {
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean runEngineInit_AlgParamSpec = false;
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean runEngineInitB$ = false;
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean runEngineInitB$String = false;
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public static boolean runEngineToString = false;
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected void engineInit(AlgorithmParameterSpec paramSpec)
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws InvalidParameterSpecException {
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected void engineInit(byte[] params) throws IOException {
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected void engineInit(byte[] params, String format)
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws IOException {
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws InvalidParameterSpecException {
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected byte[] engineGetEncoded() throws IOException {
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected byte[] engineGetEncoded(String format) throws IOException {
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected String engineToString() {
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            runEngineToString = true;
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return "AlgorithmParameters";
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
648