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

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

Introduction

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

Prototype

public DSAParametersGenerator(Digest digest) 

Source Link

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);//w  ww  .j av  a 2s.c  o  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);/* ww w  . ja v 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);// w ww . ja va  2s  .  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);
}