package org.bouncycastle.jcajce.spec;
import java.math.BigInteger;
import javax.crypto.spec.DHParameterSpec;
import org.bouncycastle.crypto.params.DHParameters;
import org.bouncycastle.crypto.params.DHValidationParameters;
Extension class for DHParameterSpec that wraps a DHDomainParameters object and provides the q domain parameter.
/**
* Extension class for DHParameterSpec that wraps a DHDomainParameters object and provides the q domain parameter.
*/
public class DHDomainParameterSpec
extends DHParameterSpec
{
private final BigInteger q;
private final BigInteger j;
private final int m;
private DHValidationParameters validationParameters;
Base constructor - use the values in an existing set of domain parameters.
Params: - domainParameters – the Diffie-Hellman domain parameters to wrap.
/**
* Base constructor - use the values in an existing set of domain parameters.
*
* @param domainParameters the Diffie-Hellman domain parameters to wrap.
*/
public DHDomainParameterSpec(DHParameters domainParameters)
{
this(domainParameters.getP(), domainParameters.getQ(), domainParameters.getG(), domainParameters.getJ(), domainParameters.getM(), domainParameters.getL());
this.validationParameters = domainParameters.getValidationParameters();
}
Minimal constructor for parameters able to be used to verify a public key, or use with MQV.
Params: - p – the prime p defining the Galois field.
- g – the generator of the multiplicative subgroup of order g.
- q – specifies the prime factor of p - 1
/**
* Minimal constructor for parameters able to be used to verify a public key, or use with MQV.
*
* @param p the prime p defining the Galois field.
* @param g the generator of the multiplicative subgroup of order g.
* @param q specifies the prime factor of p - 1
*/
public DHDomainParameterSpec(BigInteger p, BigInteger q, BigInteger g)
{
this(p, q, g, null, 0);
}
Minimal constructor for parameters able to be used to verify a public key, or use with MQV, and a private value length.
Params: - p – the prime p defining the Galois field.
- g – the generator of the multiplicative subgroup of order g.
- q – specifies the prime factor of p - 1
- l – the maximum bit length for the private value.
/**
* Minimal constructor for parameters able to be used to verify a public key, or use with MQV, and a private value length.
*
* @param p the prime p defining the Galois field.
* @param g the generator of the multiplicative subgroup of order g.
* @param q specifies the prime factor of p - 1
* @param l the maximum bit length for the private value.
*/
public DHDomainParameterSpec(BigInteger p, BigInteger q, BigInteger g, int l)
{
this(p, q, g, null, l);
}
X9.42 parameters with private value length.
Params: - p – the prime p defining the Galois field.
- g – the generator of the multiplicative subgroup of order g.
- q – specifies the prime factor of p - 1
- j – optionally specifies the value that satisfies the equation p = jq+1
- l – the maximum bit length for the private value.
/**
* X9.42 parameters with private value length.
*
* @param p the prime p defining the Galois field.
* @param g the generator of the multiplicative subgroup of order g.
* @param q specifies the prime factor of p - 1
* @param j optionally specifies the value that satisfies the equation p = jq+1
* @param l the maximum bit length for the private value.
*/
public DHDomainParameterSpec(BigInteger p, BigInteger q, BigInteger g, BigInteger j, int l)
{
this(p, q, g, j, 0, l);
}
Base constructor - the full domain parameter set.
Params: - p – the prime p defining the Galois field.
- g – the generator of the multiplicative subgroup of order g.
- q – specifies the prime factor of p - 1
- j – optionally specifies the value that satisfies the equation p = jq+1
- m – the minimum bit length for the private value.
- l – the maximum bit length for the private value.
/**
* Base constructor - the full domain parameter set.
*
* @param p the prime p defining the Galois field.
* @param g the generator of the multiplicative subgroup of order g.
* @param q specifies the prime factor of p - 1
* @param j optionally specifies the value that satisfies the equation p = jq+1
* @param m the minimum bit length for the private value.
* @param l the maximum bit length for the private value.
*/
public DHDomainParameterSpec(BigInteger p, BigInteger q, BigInteger g, BigInteger j, int m, int l)
{
super(p, g, l);
this.q = q;
this.j = j;
this.m = m;
}
Return the Q value for the domain parameter set.
Returns: the value Q.
/**
* Return the Q value for the domain parameter set.
*
* @return the value Q.
*/
public BigInteger getQ()
{
return q;
}
Return the J value for the domain parameter set if available.
Returns: the value J, null otherwise.
/**
* Return the J value for the domain parameter set if available.
*
* @return the value J, null otherwise.
*/
public BigInteger getJ()
{
return j;
}
Return the minimum bitlength for a private value to be generated from these parameters, 0 if not set.
Returns: minimum bitlength for private value.
/**
* Return the minimum bitlength for a private value to be generated from these parameters, 0 if not set.
*
* @return minimum bitlength for private value.
*/
public int getM()
{
return m;
}
Return the DHDomainParameters object we represent.
Returns: the internal DHDomainParameters.
/**
* Return the DHDomainParameters object we represent.
*
* @return the internal DHDomainParameters.
*/
public DHParameters getDomainParameters()
{
return new DHParameters(getP(), getG(), q, m, getL(), j, validationParameters);
}
}