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 Boris V. Kuznetsov 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.io.IOException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigInteger; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.AlgorithmParameters; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.AlgorithmParametersSpi; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.AlgorithmParameterSpec; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.DSAParameterSpec; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.InvalidParameterSpecException; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.MyAlgorithmParameterGeneratorSpi; 41229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>AlgorithmParameters</code> class constructors and 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * methods. 45f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class AlgorithmParametersTest extends TestCase { 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Provider 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider p; 53f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see TestCase#setUp() 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project p = new MyProvider(); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.insertProviderAt(p, 1); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see TestCase#tearDown() 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 72229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getAlgorithm() 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getAlgorithm() throws Exception { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: null value 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = new DummyAlgorithmParameters(null, p, null); 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(ap.getAlgorithm()); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: not null value 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ap = new DummyAlgorithmParameters(null, p, "AAA"); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("AAA", ap.getAlgorithm()); 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 86229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getEncoded() 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getEncoded() throws Exception { 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final byte[] enc = new byte[] { 0x02, 0x01, 0x03 }; 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() { 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] engineGetEncoded() throws IOException { 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return enc; 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p, 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "algorithm"); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: IOException if not initialized 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.getEncoded(); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("should not get encoded from un-initialized instance"); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: corresponding spi method is invoked 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new MyAlgorithmParameterSpec()); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(enc, params.getEncoded()); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 119229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getEncoded(String) 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getEncodedLjava_lang_String() throws Exception { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final byte[] enc = new byte[] { 0x02, 0x01, 0x03 }; 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final String strFormatParam = "format"; 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() { 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] engineGetEncoded(String format) throws IOException { 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(strFormatParam, format); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return enc; 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p, 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "algorithm"); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: IOException if not initialized 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.getEncoded(strFormatParam); 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("should not get encoded from un-initialized instance"); 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: corresponding spi method is invoked 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new MyAlgorithmParameterSpec()); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(enc, params.getEncoded(strFormatParam)); 152f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: if format param is null 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression test for HARMONY-2680 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project paramSpi = new MyAlgorithmParameters() { 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] engineGetEncoded(String format) throws IOException { 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(format); // null is passed to spi-provider 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return enc; 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new MyAlgorithmParameterSpec()); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(enc, params.getEncoded(null)); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 170229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getInstance(String) 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_String() { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] str = {"", "qwertyu", "!@#$%^&*()"}; 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC"); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkUnititialized(ap); 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ap.init(new MyAlgorithmParameterSpec()); 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkAP(ap, p); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception"); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 182f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for(int i = 0; i < str.length; i++) { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance(str[i]); 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException was not thrown for parameter " + str[i]); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException nsae) { 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 194229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getInstance(String, String) 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_lang_String() { 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] alg = {"", "qwertyu", "!@#$%^&*()"}; 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] prv = {"", null}; 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] prv1 = {"1234567890", "qwertyu", "!@#$%^&*()"}; 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC", "MyProvider"); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkUnititialized(ap); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ap.init(new byte[6]); 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkAP(ap, p); 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception"); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 208f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < alg.length; i++) { 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance(alg[i], "MyProvider"); 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException was not thrown for parameter " + alg[i]); 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException nsae) { 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect exception " + e + " was thrown for " + alg[i]); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 219f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < prv.length; i++) { 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC", prv[i]); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException was not thrown for parameter " + prv[i]); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException iae) { 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect exception " + e + " was thrown for " + prv[i]); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 230f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < prv1.length; i++) { 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC", prv1[i]); 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchProviderException was not thrown for parameter " + prv1[i]); 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException nspe) { 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect exception " + e + " was thrown for " + prv1[i]); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 244229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getParameterSpec(Class) 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getParameterSpecLjava_lang_Class() throws Exception { 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final MyAlgorithmParameterSpec myParamSpec = new MyAlgorithmParameterSpec(); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() { 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected AlgorithmParameterSpec engineGetParameterSpec( 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class paramSpec) { 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return myParamSpec; 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p, 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "algorithm"); 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: InvalidParameterSpecException if not initialized 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.getParameterSpec(null); 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected InvalidParameterSpecException"); 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidParameterSpecException e) { 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.getParameterSpec(MyAlgorithmParameterSpec.class); 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected InvalidParameterSpecException"); 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidParameterSpecException e) { 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: corresponding spi method is invoked 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new MyAlgorithmParameterSpec()); 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(myParamSpec, params 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getParameterSpec(MyAlgorithmParameterSpec.class)); 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: if paramSpec is null 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression test for HARMONY-2733 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project paramSpi = new MyAlgorithmParameters() { 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected AlgorithmParameterSpec engineGetParameterSpec( 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class paramSpec) { 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(paramSpec); // null is passed to spi-provider 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new MyAlgorithmParameterSpec()); 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(params.getParameterSpec(null)); 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 302229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getInstance(String, Provider) 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_security_Provider() { 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] alg = {"", "qwertyu", "!@#$%^&*()"}; 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider pp = null; 307f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC", p); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkUnititialized(ap); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ap.init(new byte[6], "aaa"); 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkAP(ap, p); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e){ 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception"); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 316f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < alg.length; i++) { 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance(alg[i], p); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException was not thrown for parameter " + alg[i]); 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException nsae) { 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect exception " + e + " was thrown for " + alg[i]); 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 327f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = AlgorithmParameters.getInstance("ABC", pp); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException was not thrown for NULL provider"); 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException iae) { 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e){ 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect exception " + e + " was thrown"); 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 339229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#getProvider() 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getProvider() throws Exception { 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: null value 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = new DummyAlgorithmParameters(null, null, "AAA"); 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(ap.getProvider()); 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: not null value 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ap = new DummyAlgorithmParameters(null, p, "AAA"); 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(p, ap.getProvider()); 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 352229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#init(java.security.spec.AlgorithmParameterSpec) 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_initLjava_security_spec_AlgorithmParameterSpec() 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws Exception { 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: corresponding spi method is invoked 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final MyAlgorithmParameterSpec spec = new MyAlgorithmParameterSpec(); 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() { 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(AlgorithmParameterSpec paramSpec) 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidParameterSpecException { 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(spec, paramSpec); 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project runEngineInit_AlgParamSpec = true; 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p, 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "algorithm"); 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(spec); 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(paramSpi.runEngineInit_AlgParamSpec); 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: InvalidParameterSpecException if already initialized 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(spec); 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected InvalidParameterSpecException"); 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidParameterSpecException e) { 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new byte[0]); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(spec); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected InvalidParameterSpecException"); 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidParameterSpecException e) { 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new byte[0], "format"); 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(spec); 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected InvalidParameterSpecException"); 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidParameterSpecException e) { 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: if paramSpec is null 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project paramSpi = new MyAlgorithmParameters() { 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(AlgorithmParameterSpec paramSpec) 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidParameterSpecException { 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(paramSpec);// null is passed to spi-provider 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project runEngineInit_AlgParamSpec = true; 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init((AlgorithmParameterSpec) null); 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(paramSpi.runEngineInit_AlgParamSpec); 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 422229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#init(byte[]) 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_init$B() throws Exception { 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: corresponding spi method is invoked 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final byte[] enc = new byte[] { 0x02, 0x01, 0x03 }; 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() { 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(byte[] params) throws IOException { 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project runEngineInitB$ = true; 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(enc, params); 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p, 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "algorithm"); 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc); 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(paramSpi.runEngineInitB$); 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: IOException if already initialized 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc); 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected IOException"); 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new MyAlgorithmParameterSpec()); 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc); 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected IOException"); 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc, "format"); 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc); 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected IOException"); 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: if params is null 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project paramSpi = new MyAlgorithmParameters() { 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(byte[] params) throws IOException { 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project runEngineInitB$ = true; 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(params); // null is passed to spi-provider 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init((byte[]) null); 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(paramSpi.runEngineInitB$); 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 489229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#init(byte[],String) 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_init$BLjava_lang_String() throws Exception { 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: corresponding spi method is invoked 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final byte[] enc = new byte[] { 0x02, 0x01, 0x03 }; 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final String strFormatParam = "format"; 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() { 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(byte[] params, String format) 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws IOException { 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project runEngineInitB$String = true; 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(enc, params); 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(strFormatParam, format); 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p, 510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "algorithm"); 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc, strFormatParam); 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(paramSpi.runEngineInitB$String); 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: IOException if already initialized 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc, strFormatParam); 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected IOException"); 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new MyAlgorithmParameterSpec()); 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc, strFormatParam); 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected IOException"); 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc); 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc, strFormatParam); 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected IOException"); 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test: if params and format are null 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression test for HARMONY-2724 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project paramSpi = new MyAlgorithmParameters() { 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(byte[] params, String format) 550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws IOException { 551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project runEngineInitB$String = true; 553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // null is passed to spi-provider 555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(params); 556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(format); 557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = new DummyAlgorithmParameters(paramSpi, p, "algorithm"); 561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(null, null); 562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(paramSpi.runEngineInitB$String); 563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 566229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.AlgorithmParameters#toString() 567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toString() throws Exception { 569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final String str = "AlgorithmParameters"; 571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyAlgorithmParameters paramSpi = new MyAlgorithmParameters() { 573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected String engineToString() { 574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return str; 575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = new DummyAlgorithmParameters(paramSpi, p, 579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "algorithm"); 580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("unititialized", params.toString()); 582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new byte[0]); 584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(str, params.toString()); 586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests DSA AlgorithmParameters provider 590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testDSAProvider() throws Exception { 592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = AlgorithmParameters.getInstance("DSA"); 593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Algorithm", "DSA", params.getAlgorithm()); 595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // init(AlgorithmParameterSpec) 597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger p = BigInteger.ONE; 598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger q = BigInteger.TEN; 599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger g = BigInteger.ZERO; 600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(new DSAParameterSpec(p, q, g)); 601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // getEncoded() and getEncoded(String) (TODO verify returned encoding) 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] enc = params.getEncoded(); 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(enc); 605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(params.getEncoded("ASN.1")); 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO assertNotNull(params.getEncoded(null)); // HARMONY-2680 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // getParameterSpec(Class) 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DSAParameterSpec spec = params.getParameterSpec(DSAParameterSpec.class); 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("p is wrong ", p, spec.getP()); 611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("q is wrong ", q, spec.getQ()); 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("g is wrong ", g, spec.getG()); 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // init(byte[]) 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = AlgorithmParameters.getInstance("DSA"); 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc); 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("param encoded is different", Arrays.equals(enc, params 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getEncoded())); 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // init(byte[], String) 621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = AlgorithmParameters.getInstance("DSA"); 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc, "ASN.1"); 623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("param encoded is different", Arrays.equals(enc, params 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getEncoded())); 625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params = AlgorithmParameters.getInstance("DSA"); 627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project params.init(enc, "DOUGLASMAWSON"); 6292f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes fail("unsupported format should have raised IOException"); 630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests OAEP AlgorithmParameters provider 637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testOAEPProvider() throws Exception { 639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters params = AlgorithmParameters.getInstance("OAEP"); 640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Algorithm", "OAEP", params.getAlgorithm()); 642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 643f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 645f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for <code>AlgorithmParameters</code> constructor 646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns AlgorithmParameters object 647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAlgorithmParametersConst() throws Exception { 649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParametersSpi spi = new MyAlgorithmParameters(); 650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameters ap = new myAlgP(spi, p, "ABC"); 651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkUnititialized(ap); 653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ap.init(new byte[6], "aaa"); 654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkAP(ap, p); 655f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //NULL parameters 657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ap = new myAlgP(null, null, null); 659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e){ 660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception should be not thrown"); 661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 663f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void checkUnititialized(AlgorithmParameters ap) { 665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Uninitialized: toString() failed", ap.toString()); 666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 667f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void checkAP(AlgorithmParameters ap, Provider p) throws Exception { 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame("getProvider() failed", p, ap.getProvider()); 671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("getAlgorithm() failed", "ABC", ap.getAlgorithm()); 672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("AlgorithmParameters", ap.toString()); 674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("toString() failed", MyAlgorithmParameters.runEngineToString); 675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("serial") 678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private class MyProvider extends Provider { 679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyProvider() { 680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super("MyProvider", 1.0, "Provider for testing"); 681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("AlgorithmParameters.ABC", MyAlgorithmParameters.class 682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyProvider(String name, double version, String info) { 686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(name, version, info); 687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 689f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private class MyAlgorithmParameterSpec implements java.security.spec.AlgorithmParameterSpec{ 691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 692f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private class DummyAlgorithmParameters extends AlgorithmParameters { 694f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes public DummyAlgorithmParameters(AlgorithmParametersSpi paramSpi, 695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider provider, String algorithm) { 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(paramSpi, provider, algorithm); 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 699f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static class MyAlgorithmParameters extends AlgorithmParametersSpi { 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean runEngineInit_AlgParamSpec = false; 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean runEngineInitB$ = false; 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean runEngineInitB$String = false; 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static boolean runEngineToString = false; 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(AlgorithmParameterSpec paramSpec) 711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidParameterSpecException { 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(byte[] params) throws IOException { 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(byte[] params, String format) 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws IOException { 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec) 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidParameterSpecException { 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] engineGetEncoded() throws IOException { 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] engineGetEncoded(String format) throws IOException { 731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected String engineToString() { 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project runEngineToString = true; 736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return "AlgorithmParameters"; 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 739f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Additional class to verify AlgorithmParameters constructor 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class myAlgP extends AlgorithmParameters { 744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public myAlgP(AlgorithmParametersSpi spi, Provider prov, String alg) { 745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(spi, prov, alg); 746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 749