Example usage for org.bouncycastle.crypto.params DSAParameterGenerationParameters DSAParameterGenerationParameters

List of usage examples for org.bouncycastle.crypto.params DSAParameterGenerationParameters DSAParameterGenerationParameters

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.params DSAParameterGenerationParameters DSAParameterGenerationParameters.

Prototype

public DSAParameterGenerationParameters(int L, int N, int certainty, SecureRandom random) 

Source Link

Document

Construct without a usage index, this will do a random construction of G.

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  www .ja  va2  s  .  co m*/
    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);//from ww  w . jav  a2 s . co  m
    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);/*from  w  w w .ja  v  a2 s . c  o  m*/
    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);

    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);
}