AlgorithmParameterGenerator.java revision 6cdb6b7e6939270ccd21790ec95e42197cefc0c3
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 Projectpackage java.security; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.AlgorithmParameterSpec; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.fortress.Engine; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code AlgorithmParameterGenerator} is an engine class which is capable of 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * generating parameters for the algorithm it was initialized with. 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class AlgorithmParameterGenerator { 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Store spi service name 30f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes private static final String SERVICE = "AlgorithmParameterGenerator"; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Used to access common engine functionality 330a480846a9798c763b088a122ab0dcd3dc3a17b6Brian Carlstrom private static final Engine ENGINE = new Engine(SERVICE); 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Store SecureRandom 360a480846a9798c763b088a122ab0dcd3dc3a17b6Brian Carlstrom private static final SecureRandom RANDOM = new SecureRandom(); 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Store used provider 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final Provider provider; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Store used AlgorithmParameterGeneratorSpi implementation 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final AlgorithmParameterGeneratorSpi spiImpl; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Store used algorithm 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final String algorithm; 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new instance of {@code AlgorithmParameterGenerator} with the 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * given arguments. 502f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramGenSpi 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a concrete implementation, this engine instance delegates to. 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param provider 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the provider. 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param algorithm 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the name of the algorithm. 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected AlgorithmParameterGenerator( 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AlgorithmParameterGeneratorSpi paramGenSpi, Provider provider, 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String algorithm) { 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.provider = provider; 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.algorithm = algorithm; 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.spiImpl = paramGenSpi; 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the name of the algorithm. 682f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the name of the algorithm. 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final String getAlgorithm() { 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return algorithm; 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a new instance of {@code AlgorithmParameterGenerator} for the 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified algorithm. 78f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param algorithm 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the name of the algorithm to use. 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a new instance of {@code AlgorithmParameterGenerator} for the 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified algorithm. 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the specified algorithm is not available. 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NullPointerException 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code algorithm} is {@code null}. 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static AlgorithmParameterGenerator getInstance(String algorithm) 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (algorithm == null) { 91897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new NullPointerException(); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 936cdb6b7e6939270ccd21790ec95e42197cefc0c3Brian Carlstrom Engine.SpiAndProvider sap = ENGINE.getInstance(algorithm, null); 946cdb6b7e6939270ccd21790ec95e42197cefc0c3Brian Carlstrom return new AlgorithmParameterGenerator((AlgorithmParameterGeneratorSpi) sap.spi, 956cdb6b7e6939270ccd21790ec95e42197cefc0c3Brian Carlstrom sap.provider, algorithm); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a new instance of {@code AlgorithmParameterGenerator} from the 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified provider for the specified algorithm. 101f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param algorithm 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the name of the algorithm to use. 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param provider 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * name of the provider of the {@code 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * AlgorithmParameterGenerator}. 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a new instance of {@code AlgorithmParameterGenerator} for the 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified algorithm. 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the specified algorithm is not available. 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchProviderException 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the specified provider is not available. 113897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes * @throws IllegalArgumentException if {@code provider == null || provider.isEmpty()} 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NullPointerException 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code algorithm} is {@code null}. 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static AlgorithmParameterGenerator getInstance(String algorithm, 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String provider) throws NoSuchAlgorithmException, 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchProviderException { 120897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes if (provider == null || provider.isEmpty()) { 121897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new IllegalArgumentException(); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider impProvider = Security.getProvider(provider); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (impProvider == null) { 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new NoSuchProviderException(provider); 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getInstance(algorithm, impProvider); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a new instance of {@code AlgorithmParameterGenerator} from the 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified provider for the specified algorithm. 133f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param algorithm 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the name of the algorithm to use. 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param provider 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the provider of the {@code AlgorithmParameterGenerator}. 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a new instance of {@code AlgorithmParameterGenerator} for the 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified algorithm. 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the specified algorithm is not available. 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NullPointerException 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code algorithm} is {@code null}. 144897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes * @throws IllegalArgumentException if {@code provider == null} 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static AlgorithmParameterGenerator getInstance(String algorithm, 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider provider) throws NoSuchAlgorithmException { 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (provider == null) { 149897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new IllegalArgumentException(); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (algorithm == null) { 152897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new NullPointerException(); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1546cdb6b7e6939270ccd21790ec95e42197cefc0c3Brian Carlstrom Object spi = ENGINE.getInstance(algorithm, provider, null); 1556cdb6b7e6939270ccd21790ec95e42197cefc0c3Brian Carlstrom return new AlgorithmParameterGenerator((AlgorithmParameterGeneratorSpi) spi, provider, 1566cdb6b7e6939270ccd21790ec95e42197cefc0c3Brian Carlstrom algorithm); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the provider associated with this {@code 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * AlgorithmParameterGenerator}. 1622f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the provider associated with this {@code 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * AlgorithmParameterGenerator}. 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final Provider getProvider() { 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return provider; 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Initializes this {@code AlgorithmParameterGenerator} with the given size. 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The default parameter set and a default {@code SecureRandom} instance 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * will be used. 1742f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param size 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the size (in number of bits). 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void init(int size) { 1790a480846a9798c763b088a122ab0dcd3dc3a17b6Brian Carlstrom spiImpl.engineInit(size, RANDOM); 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Initializes this {@code AlgorithmParameterGenerator} with the given size 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and the given {@code SecureRandom}. The default parameter set will be 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * used. 1862f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param size 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the size (in number of bits). 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param random 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the source of randomness. 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void init(int size, SecureRandom random) { 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project spiImpl.engineInit(size, random); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Initializes this {@code AlgorithmParameterGenerator} with the given {@code 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * AlgorithmParameterSpec}. A default {@code SecureRandom} instance will be 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * used. 2002f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param genParamSpec 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the parameters to use. 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidAlgorithmParameterException 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the specified parameters are not supported. 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void init(AlgorithmParameterSpec genParamSpec) 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidAlgorithmParameterException { 2080a480846a9798c763b088a122ab0dcd3dc3a17b6Brian Carlstrom spiImpl.engineInit(genParamSpec, RANDOM); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Initializes this {@code AlgorithmParameterGenerator} with the given 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code AlgorithmParameterSpec} and the given {@code SecureRandom}. 2142f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param genParamSpec 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the parameters to use. 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param random 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the source of randomness. 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidAlgorithmParameterException 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the specified parameters are not supported. 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void init(AlgorithmParameterSpec genParamSpec, 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SecureRandom random) throws InvalidAlgorithmParameterException { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project spiImpl.engineInit(genParamSpec, random); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Computes and returns {@code AlgorithmParameters} for this generator's 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * algorithm. 2302f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code AlgorithmParameters} for this generator's algorithm. 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final AlgorithmParameters generateParameters() { 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return spiImpl.engineGenerateParameters(); 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2362f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes} 237