Example usage for org.bouncycastle.crypto.generators DSAParametersGenerator init

List of usage examples for org.bouncycastle.crypto.generators DSAParametersGenerator init

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.generators DSAParametersGenerator init.

Prototype

public void init(DSAParameterGenerationParameters params) 

Source Link

Document

Initialise the key generator for DSA 2.

Usage

From source file:org.xipki.commons.security.util.DSAParameterCache.java

License:Open Source License

public static DSAParameterSpec getNewDSAParameterSpec(final int plength, final int qlength,
        final SecureRandom random) {
    final int certainty = 80;
    SecureRandom tmpRandom = (random == null) ? new SecureRandom() : random;
    DSAParametersGenerator paramGen = new DSAParametersGenerator(new SHA512Digest());
    DSAParameterGenerationParameters genParams = new DSAParameterGenerationParameters(plength, qlength,
            certainty, tmpRandom);//from  ww  w  .j  a va  2 s . com
    paramGen.init(genParams);
    DSAParameters dsaParams = paramGen.generateParameters();
    return new DSAParameterSpec(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG());
}

From source file:org.xipki.security.KeyUtil.java

License:Open Source License

public static KeyPair generateDSAKeypair(final int pLength, final int qLength, final int certainty)
        throws Exception {
    DSAParametersGenerator paramGen = new DSAParametersGenerator(new SHA512Digest());
    DSAParameterGenerationParameters genParams = new DSAParameterGenerationParameters(pLength, qLength,
            certainty, new SecureRandom());
    paramGen.init(genParams);
    DSAParameters dsaParams = paramGen.generateParameters();

    KeyPairGenerator kpGen = KeyPairGenerator.getInstance("DSA", "BC");
    DSAParameterSpec dsaParamSpec = new DSAParameterSpec(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG());
    kpGen.initialize(dsaParamSpec, new SecureRandom());
    return kpGen.generateKeyPair();
}

From source file:org.xipki.security.p11.iaik.IaikP11Slot.java

License:Open Source License

private PrivateKeyAndPKInfo generateDSAKeyPair(final Session session, final int pLength, final int qLength,
        final byte[] id, final String label) throws Exception {
    DSAParametersGenerator paramGen = new DSAParametersGenerator(new SHA512Digest());
    DSAParameterGenerationParameters genParams = new DSAParameterGenerationParameters(pLength, qLength, 80,
            new SecureRandom());
    paramGen.init(genParams);
    DSAParameters dsaParams = paramGen.generateParameters();

    DSAPrivateKey privateKey = new DSAPrivateKey();
    DSAPublicKey publicKey = new DSAPublicKey();

    setKeyAttributes(id, label, PKCS11Constants.CKK_DSA, privateKey, publicKey);

    publicKey.getPrime().setByteArrayValue(dsaParams.getP().toByteArray());
    publicKey.getSubprime().setByteArrayValue(dsaParams.getQ().toByteArray());
    publicKey.getBase().setByteArrayValue(dsaParams.getG().toByteArray());

    KeyPair kp = session.generateKeyPair(Mechanism.get(PKCS11Constants.CKM_DSA_KEY_PAIR_GEN), publicKey,
            privateKey);/*from  w  ww .j a v  a  2s.com*/

    publicKey = (DSAPublicKey) kp.getPublicKey();
    BigInteger value = new BigInteger(1, publicKey.getValue().getByteArrayValue());

    ASN1EncodableVector v = new ASN1EncodableVector();
    v.add(new ASN1Integer(dsaParams.getP()));
    v.add(new ASN1Integer(dsaParams.getQ()));
    v.add(new ASN1Integer(dsaParams.getG()));
    ASN1Sequence dssParams = new DERSequence(v);

    SubjectPublicKeyInfo pkInfo = new SubjectPublicKeyInfo(
            new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa, dssParams), new ASN1Integer(value));

    return new PrivateKeyAndPKInfo((DSAPrivateKey) kp.getPrivateKey(), pkInfo);
}

From source file:org.xwiki.crypto.internal.asymmetric.generator.BcDSAKeyParameterGenerator.java

License:Open Source License

/**
 * Generate DSA parameters./*from  w  ww. j  a v  a 2s .  co m*/
 *
 * Shared with the key generator to optimize key generation.
 *
 * @param params the parameters generation parameters.
 * @return shared DSA parameters for key generation.
 */
org.bouncycastle.crypto.params.DSAParameters getDsaParameters(SecureRandom random,
        DSAKeyParametersGenerationParameters params) {
    DSAParametersGenerator paramGen = getGenerator(params.getHashHint());

    if (params.use186r3()) {
        DSAParameterGenerationParameters p = new DSAParameterGenerationParameters(params.getPrimePsize() * 8,
                params.getPrimeQsize() * 8, params.getCertainty(), random, getUsageIndex(params.getUsage()));
        paramGen.init(p);
    } else {
        paramGen.init(params.getStrength() * 8, params.getCertainty(), random);
    }

    return paramGen.generateParameters();
}