Search in sources :

Example 1 with ElGamalParameters

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);
}
Also used : ElGamalParameters(org.gudy.bouncycastle.crypto.params.ElGamalParameters) BigInteger(java.math.BigInteger)

Example 2 with ElGamalParameters

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));
}
Also used : ElGamalParameters(org.gudy.bouncycastle.crypto.params.ElGamalParameters) ElGamalPrivateKeyParameters(org.gudy.bouncycastle.crypto.params.ElGamalPrivateKeyParameters) BigInteger(java.math.BigInteger) ElGamalPublicKeyParameters(org.gudy.bouncycastle.crypto.params.ElGamalPublicKeyParameters) AsymmetricCipherKeyPair(org.gudy.bouncycastle.crypto.AsymmetricCipherKeyPair)

Aggregations

BigInteger (java.math.BigInteger)2 ElGamalParameters (org.gudy.bouncycastle.crypto.params.ElGamalParameters)2 AsymmetricCipherKeyPair (org.gudy.bouncycastle.crypto.AsymmetricCipherKeyPair)1 ElGamalPrivateKeyParameters (org.gudy.bouncycastle.crypto.params.ElGamalPrivateKeyParameters)1 ElGamalPublicKeyParameters (org.gudy.bouncycastle.crypto.params.ElGamalPublicKeyParameters)1