diff options
Diffstat (limited to 'libjava/java/security/AlgorithmParameterGenerator.java')
-rw-r--r-- | libjava/java/security/AlgorithmParameterGenerator.java | 302 |
1 files changed, 0 insertions, 302 deletions
diff --git a/libjava/java/security/AlgorithmParameterGenerator.java b/libjava/java/security/AlgorithmParameterGenerator.java deleted file mode 100644 index 5dc9e3bb274..00000000000 --- a/libjava/java/security/AlgorithmParameterGenerator.java +++ /dev/null @@ -1,302 +0,0 @@ -/* AlgorithmParameterGenerator.java --- Algorithm Parameter Generator - Copyright (C) 1999, 2003, 2004 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package java.security; - -import gnu.java.security.Engine; - -import java.security.spec.AlgorithmParameterSpec; - -/** - * <p>The <code>AlgorithmParameterGenerator</code> class is used to generate a - * set of parameters to be used with a certain algorithm. Parameter generators - * are constructed using the <code>getInstance()</code> factory methods (static - * methods that return instances of a given class).</p> - * - * <p>The object that will generate the parameters can be initialized in two - * different ways: in an algorithm-independent manner, or in an - * algorithm-specific manner:</p> - * - * <ul> - * <li>The algorithm-independent approach uses the fact that all parameter - * generators share the concept of a <i>"size"</i> and a <i>source of - * randomness</i>. The measure of <i>size</i> is universally shared by all - * algorithm parameters, though it is interpreted differently for different - * algorithms. For example, in the case of parameters for the <i>DSA</i> - * algorithm, <i>"size"</i> corresponds to the size of the prime modulus (in - * bits). When using this approach, algorithm-specific parameter generation - * values - if any - default to some standard values, unless they can be - * derived from the specified size.</li> - * <li>The other approach initializes a parameter generator object using - * algorithm-specific semantics, which are represented by a set of - * algorithm-specific parameter generation values. To generate Diffie-Hellman - * system parameters, for example, the parameter generation values usually - * consist of the size of the prime modulus and the size of the random - * exponent, both specified in number of bits.</li> - * </ul> - * - * <p>In case the client does not explicitly initialize the - * <code>AlgorithmParameterGenerator</code> (via a call to an <code>init()</code> - * method), each provider must supply (and document) a default initialization. - * For example, the <b>GNU</b> provider uses a default modulus prime size of - * <code>1024</code> bits for the generation of <i>DSA</i> parameters. - * - * @author Mark Benvenuto - * @since 1.2 - * @see AlgorithmParameters - * @see AlgorithmParameterSpec - */ -public class AlgorithmParameterGenerator -{ - /** Service name for algorithm parameter generators. */ - private static final String ALGORITHM_PARAMETER_GENERATOR = - "AlgorithmParameterGenerator"; - - private AlgorithmParameterGeneratorSpi paramGenSpi; - private Provider provider; - private String algorithm; - - /** - * Creates an <code>AlgorithmParameterGenerator</code> object. - * - * @param paramGenSpi the delegate. - * @param provider the provider. - * @param algorithm the algorithm. - */ - protected AlgorithmParameterGenerator(AlgorithmParameterGeneratorSpi - paramGenSpi, Provider provider, - String algorithm) - { - this.paramGenSpi = paramGenSpi; - this.provider = provider; - this.algorithm = algorithm; - } - - /** - * Returns the standard name of the algorithm this parameter generator is - * associated with. - * - * @return the string name of the algorithm. - */ - public final String getAlgorithm() - { - return algorithm; - } - - /** - * Generates an <code>AlgorithmParameterGenerator</code> object that - * implements the specified digest algorithm. If the default provider package - * provides an implementation of the requested digest algorithm, an instance - * of <code>AlgorithmParameterGenerator</code> containing that implementation - * is returned. If the algorithm is not available in the default package, - * other packages are searched. - * - * @param algorithm the string name of the algorithm this parameter generator - * is associated with. - * @return the new <code>AlgorithmParameterGenerator</code> object. - * @throws NoSuchAlgorithmException if the algorithm is not available in the - * environment. - */ - public static AlgorithmParameterGenerator getInstance(String algorithm) - throws NoSuchAlgorithmException - { - Provider[] p = Security.getProviders(); - for (int i = 0; i < p.length; i++) - try - { - return getInstance(algorithm, p[i]); - } - catch (NoSuchAlgorithmException e) - { - // Ignore. - } - - throw new NoSuchAlgorithmException(algorithm); - } - - /** - * Generates an <code>AlgorithmParameterGenerator</code> object for the - * requested algorithm, as supplied from the specified provider, if such a - * parameter generator is available from the provider. - * - * @param algorithm the string name of the algorithm. - * @param provider the string name of the provider. - * @return the new <code>AlgorithmParameterGenerator</code> object. - * @throws NoSuchAlgorithmException if the <code>algorithm</code> is not - * available from the <code>provider</code>. - * @throws NoSuchProviderException if the <code>provider</code> is not - * available in the environment. - * @throws IllegalArgumentException if the <code>provider</code> name is - * <code>null</code> or empty. - * @see Provider - */ - public static AlgorithmParameterGenerator getInstance(String algorithm, - String provider) - throws NoSuchAlgorithmException, NoSuchProviderException - { - if (provider == null || provider.length() == 0) - throw new IllegalArgumentException("Illegal provider"); - - Provider p = Security.getProvider(provider); - if (p == null) - throw new NoSuchProviderException(provider); - - return getInstance(algorithm, p); - } - - /** - * Generates an AlgorithmParameterGenerator object for the requested - * algorithm, as supplied from the specified provider, if such a parameter - * generator is available from the provider. Note: the <code>provider</code> - * doesn't have to be registered. - * - * @param algorithm the string name of the algorithm. - * @param provider the provider. - * @return the new AlgorithmParameterGenerator object. - * @throws NoSuchAlgorithmException if the algorithm is not available from - * the provider. - * @throws IllegalArgumentException if the provider is null. - * @since 1.4 - * @see Provider - */ - public static AlgorithmParameterGenerator getInstance(String algorithm, - Provider provider) - throws NoSuchAlgorithmException - { - if (provider == null) - throw new IllegalArgumentException("Illegal provider"); - - try - { - return new AlgorithmParameterGenerator( - (AlgorithmParameterGeneratorSpi) Engine.getInstance( - ALGORITHM_PARAMETER_GENERATOR, algorithm, provider), - provider, algorithm); - } - catch (java.lang.reflect.InvocationTargetException ite) - { - throw new NoSuchAlgorithmException(algorithm); - } - catch (ClassCastException cce) - { - throw new NoSuchAlgorithmException(algorithm); - } - } - - /** - * Returns the provider of this algorithm parameter generator object. - * - * @return the provider of this algorithm parameter generator object. - */ - public final Provider getProvider() - { - return provider; - } - - /** - * Initializes this parameter generator for a certain <i>size</i>. To create - * the parameters, the {@link SecureRandom} implementation of the - * highest-priority installed provider is used as the source of randomness. - * (If none of the installed providers supply an implementation of - * {@link SecureRandom}, a system-provided source of randomness is used.) - * - * @param size the size (number of bits). - */ - public final void init(int size) - { - init(size, new SecureRandom()); - } - - /** - * Initializes this parameter generator for a certain size and source of - * randomness. - * - * @param size the size (number of bits). - * @param random the source of randomness. - */ - public final void init(int size, SecureRandom random) - { - paramGenSpi.engineInit(size, random); - } - - /** - * Initializes this parameter generator with a set of algorithm-specific - * parameter generation values. To generate the parameters, the {@link - * SecureRandom} implementation of the highest-priority installed provider is - * used as the source of randomness. (If none of the installed providers - * supply an implementation of {@link SecureRandom}, a system-provided source - * of randomness is used.) - * - * @param genParamSpec the set of algorithm-specific parameter generation - * values. - * @throws InvalidAlgorithmParameterException if the given parameter - * generation values are inappropriate for this parameter generator. - */ - public final void init(AlgorithmParameterSpec genParamSpec) - throws InvalidAlgorithmParameterException - { - init(genParamSpec, new SecureRandom()); - } - - /** - * Initializes this parameter generator with a set of algorithm-specific - * parameter generation values. - * - * @param genParamSpec the set of algorithm-specific parameter generation - * values. - * @param random the source of randomness. - * @throws InvalidAlgorithmParameterException if the given parameter - * generation values are inappropriate for this parameter generator. - */ - public final void init(AlgorithmParameterSpec genParamSpec, - SecureRandom random) - throws InvalidAlgorithmParameterException - { - paramGenSpi.engineInit(genParamSpec, random); - } - - /** - * Generates the parameters. - * - * @return the new {@link AlgorithmParameters} object. - */ - public final AlgorithmParameters generateParameters() - { - return paramGenSpi.engineGenerateParameters(); - } -} |