use of org.gudy.bouncycastle.crypto.params.ElGamalParameters in project BiglyBT by BiglySoftware.
the class ElGamalParametersGenerator method generateParameters.
/**
* which generates the p and g values from the given parameters,
* returning the ElGamalParameters object.
* <p>
* Note: can take a while...
*/
public ElGamalParameters generateParameters() {
BigInteger g, p, q;
int qLength = size - 1;
//
for (; ; ) {
q = new BigInteger(qLength, 1, random);
if (q.bitLength() != qLength) {
continue;
}
if (!q.isProbablePrime(certainty)) {
continue;
}
p = q.multiply(TWO).add(ONE);
if (p.isProbablePrime(certainty)) {
break;
}
}
//
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 ElGamalParameters(p, g);
}
use of org.gudy.bouncycastle.crypto.params.ElGamalParameters in project BiglyBT by BiglySoftware.
the class ElGamalKeyPairGenerator method generateKeyPair.
@Override
public AsymmetricCipherKeyPair generateKeyPair() {
BigInteger p, g, x, y;
int qLength = param.getStrength() - 1;
ElGamalParameters elParams = param.getParameters();
p = elParams.getP();
g = elParams.getG();
//
// calculate the private key
//
x = new BigInteger(qLength, param.getRandom());
//
// calculate the public key.
//
y = g.modPow(x, p);
return new AsymmetricCipherKeyPair(new ElGamalPublicKeyParameters(y, elParams), new ElGamalPrivateKeyParameters(x, elParams));
}
Aggregations