do {
BigInteger e = p.subtract(BigInteger.ONE).divide(q);
NativeBigInteger h;
do {
h = new NativeBigInteger(hashLength, r);
} while(h.compareTo(p.subtract(BigInteger.ONE)) >= 0);
g = (NativeBigInteger) h.modPow(e, p);
} while (g.equals(BigInteger.ONE));
DSAGroup group = new DSAGroup(p, q, g);
System.out.println("g: "+HexUtil.toHexString(g)+" ("+g.bitLength()+ ')');
System.out.println("Group: "+group.verboseToString());