package java.security;
import java.security.spec.AlgorithmParameterSpec;
public class AlgorithmParameterGenerator
{
AlgorithmParameterGeneratorSpi spi;
Provider provider;
String algorithm;
protected AlgorithmParameterGenerator(
AlgorithmParameterGeneratorSpi paramGenSpi,
Provider provider,
String algorithm)
{
this.spi = paramGenSpi;
this.provider = provider;
this.algorithm = algorithm;
}
public final AlgorithmParameters generateParameters()
{
return spi.engineGenerateParameters();
}
public final String getAlgorithm()
{
return algorithm;
}
public static AlgorithmParameterGenerator getInstance(String algorithm)
throws NoSuchAlgorithmException
{
try
{
SecurityUtil.Implementation imp = SecurityUtil.getImplementation("AlgorithmParameterGenerator", algorithm, null);
if (imp != null)
{
return new AlgorithmParameterGenerator((AlgorithmParameterGeneratorSpi)imp.getEngine(), imp.getProvider(), algorithm);
}
throw new NoSuchAlgorithmException("can't find algorithm " + algorithm);
}
catch (NoSuchProviderException e)
{
throw new NoSuchAlgorithmException(algorithm + " not found");
}
}
public static AlgorithmParameterGenerator getInstance(String algorithm, String provider)
throws NoSuchAlgorithmException, NoSuchProviderException
{
SecurityUtil.Implementation imp = SecurityUtil.getImplementation("AlgorithmParameterGenerator", algorithm, provider);
if (imp != null)
{
return new AlgorithmParameterGenerator((AlgorithmParameterGeneratorSpi)imp.getEngine(), imp.getProvider(), algorithm);
}
throw new NoSuchAlgorithmException("can't find algorithm " + algorithm);
}
public final Provider getProvider()
{
return provider;
}
public final void init(
AlgorithmParameterSpec genParamSpec)
throws InvalidAlgorithmParameterException
{
spi.engineInit(genParamSpec, new SecureRandom());
}
public final void init(
AlgorithmParameterSpec genParamSpec,
SecureRandom random)
throws InvalidAlgorithmParameterException
{
spi.engineInit(genParamSpec, random);
}
public final void init(
int size)
{
spi.engineInit(size, new SecureRandom());
}
public final void init(
int size,
SecureRandom random)
{
spi.engineInit(size, random);
}
}