org.bouncycastle.crypto.params.NaccacheSternKeyGenerationParameters Maven / Gradle / Ivy
package org.bouncycastle.crypto.params;
import java.security.SecureRandom;
import org.bouncycastle.crypto.KeyGenerationParameters;
/**
* Parameters for NaccacheStern public private key generation. For details on
* this cipher, please see
*
* https://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
*/
public class NaccacheSternKeyGenerationParameters extends KeyGenerationParameters
{
// private BigInteger publicExponent;
private int certainty;
private int cntSmallPrimes;
private boolean debug = false;
/**
* Parameters for generating a NaccacheStern KeyPair.
*
* @param random
* The source of randomness
* @param strength
* The desired strength of the Key in Bits
* @param certainty
* the probability that the generated primes are not really prime
* as integer: 2^(-certainty) is then the probability
* @param cntSmallPrimes
* How many small key factors are desired
*/
public NaccacheSternKeyGenerationParameters(SecureRandom random, int strength, int certainty, int cntSmallPrimes)
{
this(random, strength, certainty, cntSmallPrimes, false);
}
/**
* Parameters for a NaccacheStern KeyPair.
*
* @param random
* The source of randomness
* @param strength
* The desired strength of the Key in Bits
* @param certainty
* the probability that the generated primes are not really prime
* as integer: 2^(-certainty) is then the probability
* @param cntSmallPrimes
* How many small key factors are desired
* @param debug
* Turn debugging on or off (reveals secret information, use with
* caution)
*/
public NaccacheSternKeyGenerationParameters(SecureRandom random,
int strength, int certainty, int cntSmallPrimes, boolean debug)
{
super(random, strength);
this.certainty = certainty;
if (cntSmallPrimes % 2 == 1)
{
throw new IllegalArgumentException("cntSmallPrimes must be a multiple of 2");
}
if (cntSmallPrimes < 30)
{
throw new IllegalArgumentException("cntSmallPrimes must be >= 30 for security reasons");
}
this.cntSmallPrimes = cntSmallPrimes;
this.debug = debug;
}
/**
* @return Returns the certainty.
*/
public int getCertainty()
{
return certainty;
}
/**
* @return Returns the cntSmallPrimes.
*/
public int getCntSmallPrimes()
{
return cntSmallPrimes;
}
public boolean isDebug()
{
return debug;
}
}