Example usage for org.bouncycastle.crypto.params DSAParameters getP

List of usage examples for org.bouncycastle.crypto.params DSAParameters getP

Introduction

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

Prototype

public BigInteger getP() 

Source Link

Usage

From source file:dorkbox.build.util.jar.JarSigner.java

License:Apache License

private static void writeDsaKeysToFile(DSAPrivateKeyParameters wimpyPrivateKey,
        DSAPublicKeyParameters wimpyPublicKey, File wimpyKeyRawFile) throws IOException, FileNotFoundException {

    DSAParameters parameters = wimpyPublicKey.getParameters(); // has to convert to DSAParameter so encoding works.
    byte[] publicKeyBytes = new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa,
            new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()),
            new ASN1Integer(wimpyPublicKey.getY())).getEncoded();
    // SAME AS://from w  w  w  .j ava2 s .c o m
    //        Certificate[] certificates = Launcher.class.getProtectionDomain().getCodeSource().getCertificates();
    //        if (certificates.length != 1) {
    //            // WHOOPS!
    //            Exit.FailedSecurity("Incorrect certificate length!");
    //        }
    //
    //        Certificate certificate = certificates[0];
    //        PublicKey publicKey = certificate.getPublicKey();
    //        byte[] publicKeyBytes = publicKey.getEncoded();
    //
    //        digest.reset();
    //        digest.update(publicKeyBytes, 0, publicKeyBytes.length);
    //        hashPublicKeyBytes = digest.digest();

    parameters = wimpyPrivateKey.getParameters();
    byte[] privateKeyBytes = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa,
            new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()),
            new ASN1Integer(wimpyPrivateKey.getX())).getEncoded();

    // write public length to bytes.
    byte[] publicKeySize = new byte[] { (byte) (publicKeyBytes.length >>> 24),
            (byte) (publicKeyBytes.length >>> 16), (byte) (publicKeyBytes.length >>> 8),
            (byte) (publicKeyBytes.length >>> 0) };

    ByteArrayOutputStream keyOutputStream = new ByteArrayOutputStream(
            4 + publicKeyBytes.length + privateKeyBytes.length);

    keyOutputStream.write(publicKeyBytes, 0, publicKeyBytes.length);
    keyOutputStream.write(privateKeyBytes, 0, privateKeyBytes.length);
    keyOutputStream.write(publicKeySize, 0, publicKeySize.length); // mess with people staring at the keys (store length at the end).

    displayByteHash(publicKeyBytes);

    // write out the file
    OutputStream outputStream = new FileOutputStream(wimpyKeyRawFile);
    keyOutputStream.writeTo(outputStream);
    Sys.close(outputStream);
}

From source file:dorkbox.util.crypto.DsaTest.java

License:Apache License

@Test
public void DsaJceSerializaion() throws IOException {

    AsymmetricCipherKeyPair generateKeyPair = CryptoDSA
            .generateKeyPair(new SecureRandom(entropySeed.getBytes()), 1024);
    DSAPrivateKeyParameters privateKey = (DSAPrivateKeyParameters) generateKeyPair.getPrivate();
    DSAPublicKeyParameters publicKey = (DSAPublicKeyParameters) generateKeyPair.getPublic();

    // public key as bytes.
    DSAParameters parameters = publicKey.getParameters();
    byte[] bs = new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa,
            new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()),
            new ASN1Integer(publicKey.getY())).getEncoded();

    parameters = privateKey.getParameters();
    byte[] bs2 = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa,
            new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()),
            new ASN1Integer(privateKey.getX())).getEncoded();

    DSAPrivateKeyParameters privateKey2 = (DSAPrivateKeyParameters) PrivateKeyFactory.createKey(bs2);
    DSAPublicKeyParameters publicKey2 = (DSAPublicKeyParameters) PublicKeyFactory.createKey(bs);

    // test via signing
    byte[] bytes = "hello, my name is inigo montoya".getBytes();

    BigInteger[] signature = CryptoDSA.generateSignature(privateKey, new SecureRandom(entropySeed.getBytes()),
            bytes);/* ww  w.  j  a  v  a  2 s  . c o  m*/

    boolean verify1 = CryptoDSA.verifySignature(publicKey, bytes, signature);

    if (!verify1) {
        fail("failed signature verification");
    }

    boolean verify2 = CryptoDSA.verifySignature(publicKey2, bytes, signature);

    if (!verify2) {
        fail("failed signature verification");
    }

    // now reverse who signs what.
    BigInteger[] signatureB = CryptoDSA.generateSignature(privateKey2, new SecureRandom(entropySeed.getBytes()),
            bytes);

    boolean verifyB1 = CryptoDSA.verifySignature(publicKey, bytes, signatureB);

    if (!verifyB1) {
        fail("failed signature verification");
    }

    boolean verifyB2 = CryptoDSA.verifySignature(publicKey2, bytes, signatureB);

    if (!verifyB2) {
        fail("failed signature verification");
    }
}

From source file:org.jruby.ext.openssl.impl.PKCS10Request.java

License:LGPL

public PublicKey getPublicKey() throws IOException {

    AsymmetricKeyParameter keyParams = PublicKeyFactory.createKey(publicKeyInfo);

    KeySpec keySpec = null;/*  www.  j a  v a 2 s  . c om*/
    KeyFactory keyFact = null;

    try {
        if (keyParams instanceof RSAKeyParameters) {
            RSAKeyParameters rsa = (RSAKeyParameters) keyParams;
            keySpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getExponent());
            keyFact = KeyFactory.getInstance("RSA");

        } else if (keyParams instanceof DSAPublicKeyParameters) {
            DSAPublicKeyParameters dsa = (DSAPublicKeyParameters) keyParams;
            DSAParameters params = dsa.getParameters();
            keySpec = new DSAPublicKeySpec(dsa.getY(), params.getP(), params.getQ(), params.getG());
            keyFact = KeyFactory.getInstance("DSA");
        }

        if (keySpec != null && keyFact != null) {
            return keyFact.generatePublic(keySpec);
        }
    } catch (NoSuchAlgorithmException e) {
    } catch (InvalidKeySpecException e) {
    }

    throw new IOException("Could not read public key");
}

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 w w w  .j  a  va 2  s.  c o  m
    paramGen.init(genParams);
    DSAParameters dsaParams = paramGen.generateParameters();
    return new DSAParameterSpec(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG());
}

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

License:Open Source License

public static KeyPair generateDSAKeypair(final DSAParameters dsaParams, final SecureRandom random)
        throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
    DSAParameterSpec dsaParamSpec = new DSAParameterSpec(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG());
    KeyPairGenerator kpGen = getKeyPairGenerator("DSA");
    synchronized (kpGen) {
        kpGen.initialize(dsaParamSpec, random);
        return kpGen.generateKeyPair();
    }/* ww w. j av a2 s  .c  om*/
}

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 .c o  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  w  w. j a 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);
}

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

License:Open Source License

@Override
public KeyGenerationParameters generate(KeyParametersGenerationParameters parameters) {
    if (!(parameters instanceof DSAKeyParametersGenerationParameters)) {
        throw new IllegalArgumentException(
                "Invalid parameters for DSA key parameters generator: " + parameters.getClass().getName());
    }/*from   ww w . j  av  a 2s .c om*/

    org.bouncycastle.crypto.params.DSAParameters dsaParams = getDsaParameters(random.get(),
            (DSAKeyParametersGenerationParameters) parameters);

    org.bouncycastle.crypto.params.DSAValidationParameters dsaValidParams = dsaParams.getValidationParameters();

    return new DSAKeyGenerationParameters(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG(),
            new DSAKeyValidationParameters(dsaValidParams.getSeed(), dsaValidParams.getCounter(),
                    getUsage(dsaValidParams.getUsageIndex())));
}