FileDocCategorySizeDatePackage
DHParametersGenerator.javaAPI DocAndroid 1.5 API2044Wed May 06 22:41:06 BST 2009org.bouncycastle.crypto.generators

DHParametersGenerator

public class DHParametersGenerator extends Object

Fields Summary
private int
size
private int
certainty
private SecureRandom
random
private static BigInteger
ONE
private static BigInteger
TWO
Constructors Summary
Methods Summary
public org.bouncycastle.crypto.params.DHParametersgenerateParameters()
which generates the p and g values from the given parameters, returning the DHParameters object.

Note: can take a while...

        BigInteger      g, p, q;
        int             qLength = size - 1;

        //
        // find a safe prime p where p = 2*q + 1, where p and q are prime.
        //
        for (;;)
        {
            q = new BigInteger(qLength, certainty, random);
            p = q.multiply(TWO).add(ONE);
            if (p.isProbablePrime(certainty))
            {
                break;
            }
        }

        //
        // calculate the generator g - the advantage of using the 2q+1 
        // approach is that we know the prime factorisation of (p - 1)...
        //
        for (;;)
        {
            g = new BigInteger(qLength, random);

            if (g.modPow(TWO, p).equals(ONE))
            {
                continue;
            }

            if (g.modPow(q, p).equals(ONE))
            {
                continue;
            }

            break;
        }

        return new DHParameters(p, g, q, 2);
    
public voidinit(int size, int certainty, java.security.SecureRandom random)
Initialise the parameters generator.

param
size bit length for the prime p
param
certainty level of certainty for the prime number tests
param
random a source of randomness


                                       
      
                     
                     
            
    
        this.size = size;
        this.certainty = certainty;
        this.random = random;