Example usage for org.bouncycastle.crypto.params RSAPrivateCrtKeyParameters getDQ

List of usage examples for org.bouncycastle.crypto.params RSAPrivateCrtKeyParameters getDQ

Introduction

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

Prototype

public BigInteger getDQ() 

Source Link

Usage

From source file:co.lqnt.lockbox.key.KeyFactory.java

License:Open Source License

/**
 * Generate a new private key.//from w  w  w  .  j  a  v  a2 s . c  o  m
 *
 * @param size The size of the key in bits.
 *
 * @return The private key.
 */
public PrivateKey generatePrivateKey(final int size) {
    this.keyGenerator().init(new RSAKeyGenerationParameters(BigInteger.valueOf(65537),
            this.random().jceSecureRandom(), size, 80));

    AsymmetricKeyParameter keyParameters = this.keyGenerator().generateKeyPair().getPrivate();

    RSAPrivateCrtKeyParameters rsaKeyParameters;
    if (keyParameters instanceof RSAPrivateCrtKeyParameters) {
        rsaKeyParameters = (RSAPrivateCrtKeyParameters) keyParameters;
    } else {
        throw new RuntimeException("Invalid key pair generated by Bouncy Castle.");
    }

    return new PrivateKey(rsaKeyParameters.getModulus(), rsaKeyParameters.getPublicExponent(),
            rsaKeyParameters.getExponent(), rsaKeyParameters.getP(), rsaKeyParameters.getQ(),
            rsaKeyParameters.getDP(), rsaKeyParameters.getDQ(), rsaKeyParameters.getQInv());
}

From source file:co.lqnt.lockbox.key.KeyFactory.java

License:Open Source License

/**
 * Convert Bouncy Castle private key info to a Lockbox private key.
 *
 * @param keyInformation The private key information.
 *
 * @return The private key./*from   w ww.  jav a 2 s . co m*/
 * @throws PrivateKeyReadException If reading of the private key fails.
 */
protected PrivateKey convertPrivateKey(final PrivateKeyInfo keyInformation) throws PrivateKeyReadException {
    AsymmetricKeyParameter keyParameter;
    try {
        keyParameter = this.bcKeyParametersFactory().createPrivateKeyParameters(keyInformation);
    } catch (IOException e) {
        throw new PrivateKeyReadException(e);
    }

    RSAPrivateCrtKeyParameters privateKeyParameters;
    if (keyParameter instanceof RSAPrivateCrtKeyParameters) {
        privateKeyParameters = (RSAPrivateCrtKeyParameters) keyParameter;
    } else {
        throw new PrivateKeyReadException();
    }

    return new PrivateKey(privateKeyParameters.getModulus(), privateKeyParameters.getPublicExponent(),
            privateKeyParameters.getExponent(), privateKeyParameters.getP(), privateKeyParameters.getQ(),
            privateKeyParameters.getDP(), privateKeyParameters.getDQ(), privateKeyParameters.getQInv());
}

From source file:com.foilen.smalltools.crypt.bouncycastle.asymmetric.RSACrypt.java

License:Open Source License

@Override
public RSAKeyDetails retrieveKeyDetails(AsymmetricKeys keyPair) {

    RSAKeyDetails rsaKeyDetails = new RSAKeyDetails();

    try {/*from  w  w w  .  j av a 2 s. com*/
        // Public key
        if (keyPair.getPublicKey() != null) {
            AsymmetricKeyParameter key = keyPair.getPublicKey();

            if (!(key instanceof RSAKeyParameters)) {
                throw new SmallToolsException(
                        "The public key is not of type RSAKeyParameters. Type is " + key.getClass().getName());
            }

            RSAKeyParameters rsaKey = (RSAKeyParameters) key;
            rsaKeyDetails.setModulus(rsaKey.getModulus());
            rsaKeyDetails.setPublicExponent(rsaKey.getExponent());
        }

        // Private key
        if (keyPair.getPrivateKey() != null) {
            AsymmetricKeyParameter key = keyPair.getPrivateKey();
            if (!(key instanceof RSAKeyParameters)) {
                throw new SmallToolsException(
                        "The private key is not of type RSAKeyParameters. Type is " + key.getClass().getName());
            }

            RSAKeyParameters rsaKeyParameters = (RSAKeyParameters) key;
            rsaKeyDetails.setModulus(rsaKeyParameters.getModulus());
            rsaKeyDetails.setPrivateExponent(rsaKeyParameters.getExponent());

            // CRT parameters
            if (key instanceof RSAPrivateCrtKeyParameters) {
                RSAPrivateCrtKeyParameters rsaPrivateCrtKeyParameters = (RSAPrivateCrtKeyParameters) key;
                rsaKeyDetails.setCrt(true);
                rsaKeyDetails.setPrimeP(rsaPrivateCrtKeyParameters.getP());
                rsaKeyDetails.setPrimeQ(rsaPrivateCrtKeyParameters.getQ());
                rsaKeyDetails.setPrimeExponentP(rsaPrivateCrtKeyParameters.getDP());
                rsaKeyDetails.setPrimeExponentQ(rsaPrivateCrtKeyParameters.getDQ());
                rsaKeyDetails.setCrtCoefficient(rsaPrivateCrtKeyParameters.getQInv());
            }
        }

        return rsaKeyDetails;

    } catch (SmallToolsException e) {
        throw e;
    } catch (Exception e) {
        throw new SmallToolsException("Could not retrieve the details", e);
    }

}

From source file:com.foilen.smalltools.crypt.bouncycastle.cert.RSATools.java

License:Open Source License

/**
 * Create a {@link Key} from the private {@link AsymmetricKeys}.
 *
 * @param asymmetricKeys// ww w.  j  a v a  2  s .  com
 *            the asymmetric keys
 * @return the Java key
 */
public static PrivateKey createPrivateKey(AsymmetricKeys asymmetricKeys) {
    try {
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        RSAPrivateCrtKeyParameters privateKeyParameters = (RSAPrivateCrtKeyParameters) asymmetricKeys
                .getPrivateKey();
        RSAPrivateCrtKeySpec keySpec = new RSAPrivateCrtKeySpec(privateKeyParameters.getModulus(),
                privateKeyParameters.getPublicExponent(), privateKeyParameters.getExponent(),
                privateKeyParameters.getP(), privateKeyParameters.getQ(), privateKeyParameters.getDP(),
                privateKeyParameters.getDQ(), privateKeyParameters.getQInv());
        return keyFactory.generatePrivate(keySpec);
    } catch (Exception e) {
        throw new SmallToolsException("Problem generating the key", e);
    }
}

From source file:com.joyent.http.signature.crypto.MantaNativeRSACoreEngine.java

License:Apache License

/**
 * initialise the RSA engine.//from  w w  w .  j  a v a2s. co  m
 *
 * @param forEncryption true if we are encrypting, false otherwise.
 * @param param         the necessary RSA key parameters.
 */
public void init(boolean forEncryption, CipherParameters param) {
    if (param instanceof ParametersWithRandom) {
        ParametersWithRandom rParam = (ParametersWithRandom) param;

        key = (RSAKeyParameters) rParam.getParameters();
    } else {
        key = (RSAKeyParameters) param;
    }

    this.forEncryption = forEncryption;

    if (key instanceof RSAPrivateCrtKeyParameters) {
        isPrivate = true;
        //
        // we have the extra factors, use the Chinese Remainder Theorem - the author
        // wishes to express his thanks to Dirk Bonekaemper at rtsffm.com for
        // advice regarding the expression of this.
        //
        RSAPrivateCrtKeyParameters crtKey = (RSAPrivateCrtKeyParameters) key;

        p = new GmpInteger(crtKey.getP());
        q = new GmpInteger(crtKey.getQ());
        dP = new GmpInteger(crtKey.getDP());
        dQ = new GmpInteger(crtKey.getDQ());
        qInv = crtKey.getQInv();

        exponent = modulus = null;
    } else {
        isPrivate = false;
        exponent = new GmpInteger(key.getExponent());
        modulus = new GmpInteger(key.getModulus());
        isSmallExponent = exponent.bitLength() < 64;

        p = q = dP = dQ = null;
        qInv = null;
    }
}

From source file:de.r2soft.empires.framework.security.CertificateUtil.java

License:Open Source License

/**
 * Generate an RSA private key//www .jav a 2s. c om
 * 
 * @param cipherParameters
 * @param cipherParameters2
 * @return
 * @throws InvalidKeySpecException
 * @throws NoSuchAlgorithmException
 */
private PrivateKey generatePrivateKey(CipherParameters cipherParameters, CipherParameters cipherParameters2)
        throws InvalidKeySpecException, NoSuchAlgorithmException {

    RSAPrivateCrtKeyParameters privateKeyParameters = (RSAPrivateCrtKeyParameters) cipherParameters;
    RSAKeyParameters publicKeyParameters = (RSAKeyParameters) cipherParameters2;

    RSAPrivateCrtKeySpec rsaPrivateKeySpec = new RSAPrivateCrtKeySpec(publicKeyParameters.getModulus(),
            publicKeyParameters.getExponent(), privateKeyParameters.getExponent(), privateKeyParameters.getP(),
            privateKeyParameters.getQ(), privateKeyParameters.getDP(), privateKeyParameters.getDQ(),
            privateKeyParameters.getQInv());

    return KeyFactory.getInstance("RSA").generatePrivate(rsaPrivateKeySpec);
}

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

License:Apache License

@SuppressWarnings("RedundantIfStatement")
public static boolean compare(RSAPrivateCrtKeyParameters private1, RSAPrivateCrtKeyParameters private2) {
    if (!private1.getModulus().equals(private2.getModulus())) {
        return false;
    }/* w w w  .  j a v  a  2s . c  om*/
    if (!private1.getExponent().equals(private2.getExponent())) {
        return false;
    }
    if (!private1.getDP().equals(private2.getDP())) {
        return false;
    }
    if (!private1.getDQ().equals(private2.getDQ())) {
        return false;
    }
    if (!private1.getP().equals(private2.getP())) {
        return false;
    }
    if (!private1.getPublicExponent().equals(private2.getPublicExponent())) {
        return false;
    }
    if (!private1.getQ().equals(private2.getQ())) {
        return false;
    }
    if (!private1.getQInv().equals(private2.getQInv())) {
        return false;
    }

    return true;
}

From source file:dorkbox.util.serialization.RsaPrivateKeySerializer.java

License:Apache License

@Override
public void write(Kryo kryo, Output output, RSAPrivateCrtKeyParameters key) {
    byte[] bytes;
    int length;/*from w  w  w .j av  a 2s.  c o  m*/

    /////////////
    bytes = key.getDP().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);

    /////////////
    bytes = key.getDQ().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);

    /////////////
    bytes = key.getExponent().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);

    /////////////
    bytes = key.getModulus().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);

    /////////////
    bytes = key.getP().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);

    /////////////
    bytes = key.getPublicExponent().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);

    /////////////
    bytes = key.getQ().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);

    /////////////
    bytes = key.getQInv().toByteArray();
    length = bytes.length;

    output.writeInt(length, true);
    output.writeBytes(bytes, 0, length);
}

From source file:frost.crypt.FrostCrypt.java

License:Open Source License

/**
 * Generate a new RSA 1024 bit key pair.
 * @returns String[0] is private key; String[1] is public key
 *//* w w w .j  av a2 s  . c  om*/
public synchronized String[] generateKeys() {

    RSAKeyPairGenerator keygen = new RSAKeyPairGenerator();
    keygen.init(new RSAKeyGenerationParameters(
            new BigInteger("3490529510847650949147849619903898133417764638493387843990820577"),
            getSecureRandom(), 1024, 80));
    //this big integer is the winner of some competition as far as I remember

    AsymmetricCipherKeyPair keys = keygen.generateKeyPair();

    //extract the keys
    RSAKeyParameters pubKey = (RSAKeyParameters) keys.getPublic();
    RSAPrivateCrtKeyParameters privKey = (RSAPrivateCrtKeyParameters) keys.getPrivate();

    //the return value
    String[] result = new String[2];
    StringBuffer temp = new StringBuffer();

    //create the keys
    temp.append(new String(Base64.encode(pubKey.getExponent().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(pubKey.getModulus().toByteArray())));
    result[1] = temp.toString(); // public key

    //rince and repeat, this time exactly the way its done in the constructor
    temp = new StringBuffer();
    temp.append(new String(Base64.encode(privKey.getModulus().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(privKey.getPublicExponent().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(privKey.getExponent().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(privKey.getP().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(privKey.getQ().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(privKey.getDP().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(privKey.getDQ().toByteArray())));
    temp.append(":");
    temp.append(new String(Base64.encode(privKey.getQInv().toByteArray())));
    result[0] = temp.toString(); // private key

    return result;
}

From source file:org.jcryptool.visual.jctca.listeners.CreateCertListener.java

License:Open Source License

/**
 * generates a new Key Pair for the user with the information provided in the other fields
 *///from www . j av a2  s.c o  m
private void generateNewRSAKeyPair() {
    RSAKeyPairGenerator gen = new RSAKeyPairGenerator();
    SecureRandom sr = new SecureRandom();
    gen.init(new RSAKeyGenerationParameters(BigInteger.valueOf(3), sr, 1024, 80));
    AsymmetricCipherKeyPair keypair = gen.generateKeyPair();
    RSAKeyParameters publicKey = (RSAKeyParameters) keypair.getPublic();
    RSAPrivateCrtKeyParameters privateKey = (RSAPrivateCrtKeyParameters) keypair.getPrivate();
    try {
        // JCE format needed for the certificate - because
        // getEncoded() is necessary...
        PublicKey pubKey = KeyFactory.getInstance("RSA")//$NON-NLS-1$
                .generatePublic(new RSAPublicKeySpec(publicKey.getModulus(), publicKey.getExponent()));
        // and this one for the KeyStore
        PrivateKey privKey = KeyFactory.getInstance("RSA")//$NON-NLS-1$
                .generatePrivate(new RSAPrivateCrtKeySpec(publicKey.getModulus(), publicKey.getExponent(),
                        privateKey.getExponent(), privateKey.getP(), privateKey.getQ(), privateKey.getDP(),
                        privateKey.getDQ(), privateKey.getQInv()));
        String name = txt_first_name.getText() + " " //$NON-NLS-1$
                + txt_last_name.getText();
        KeyStoreAlias privAlias = new KeyStoreAlias(name, KeyType.KEYPAIR_PRIVATE_KEY, "RSA", 1024, //$NON-NLS-1$
                (name.concat(privKey.toString())).hashCode() + " ", //$NON-NLS-1$
                privKey.getClass().getName());
        KeyStoreAlias pubAlias = new KeyStoreAlias(name, KeyType.KEYPAIR_PUBLIC_KEY, "RSA", 1024, //$NON-NLS-1$
                (name.concat(privKey.toString())).hashCode() + " ", //$NON-NLS-1$
                pubKey.getClass().getName());
        mng.addKeyPair(privKey, CertificateFactory.createJCrypToolCertificate(pubKey),
                KeyStoreManager.KEY_PASSWORD, privAlias, pubAlias);
        String entry = pubAlias.getContactName() + " (Hash: " + Util.formatHash(pubAlias.getHashValue()) + ")";//$NON-NLS-1$ //$NON-NLS-2$
        cmb_keys.add(entry);
        cmb_keys.getParent().layout();
        cmb_keys.select(cmb_keys.getItemCount() - 1);
        cmb_keys.setData(entry, pubAlias);
    } catch (InvalidKeySpecException e) {
        LogUtil.logError(e);
    } catch (NoSuchAlgorithmException e) {
        LogUtil.logError(e);
    }
}