Example usage for org.bouncycastle.asn1.pkcs RSAPrivateKey getCoefficient

List of usage examples for org.bouncycastle.asn1.pkcs RSAPrivateKey getCoefficient

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.pkcs RSAPrivateKey getCoefficient.

Prototype

public BigInteger getCoefficient() 

Source Link

Usage

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

License:Open Source License

@Override
public AsymmetricKeys loadKeysPemFromString(String... pems) {
    RSAKeyDetails keyDetails = new RSAKeyDetails();
    PemReader reader = null;/*  w  w  w.  j a  v  a 2 s .c om*/
    try {
        for (String pem : pems) {
            if (pem == null) {
                continue;
            }
            reader = new PemReader(new StringReader(pem));
            PemObject pemObject;
            while ((pemObject = reader.readPemObject()) != null) {
                switch (pemObject.getType()) {
                case "RSA PRIVATE KEY":
                    RSAPrivateKey rsaPrivateKey = RSAPrivateKey.getInstance(pemObject.getContent());
                    keyDetails.setModulus(rsaPrivateKey.getModulus());
                    keyDetails.setPrivateExponent(rsaPrivateKey.getPrivateExponent());
                    keyDetails.setPublicExponent(rsaPrivateKey.getPublicExponent());

                    if (CollectionsTools.isAnyItemNotNull(rsaPrivateKey.getPrime1(), rsaPrivateKey.getPrime2(),
                            rsaPrivateKey.getExponent1(), rsaPrivateKey.getExponent2(),
                            rsaPrivateKey.getCoefficient())) {
                        keyDetails.setCrt(true);
                        keyDetails.setPrimeP(rsaPrivateKey.getPrime1());
                        keyDetails.setPrimeQ(rsaPrivateKey.getPrime2());
                        keyDetails.setPrimeExponentP(rsaPrivateKey.getExponent1());
                        keyDetails.setPrimeExponentQ(rsaPrivateKey.getExponent2());
                        keyDetails.setCrtCoefficient(rsaPrivateKey.getCoefficient());
                    }
                    break;
                case "PUBLIC KEY":
                    KeyFactory kf = KeyFactory.getInstance("RSA");
                    X509EncodedKeySpec keySpec = new X509EncodedKeySpec(pemObject.getContent());
                    RSAPublicKey rsaPublicKey = (RSAPublicKey) kf.generatePublic(keySpec);
                    keyDetails.setModulus(rsaPublicKey.getModulus());
                    keyDetails.setPublicExponent(rsaPublicKey.getPublicExponent());
                    break;
                }
            }
        }
        return createKeyPair(keyDetails);
    } catch (Exception e) {
        throw new SmallToolsException("Problem loading the keys", e);
    } finally {
        CloseableTools.close(reader);
    }
}

From source file:io.apigee.trireme.crypto.algorithms.RsaKeyPairProvider.java

License:Open Source License

private KeyPair convertKeyPair(PEMKeyPair kp) throws CryptoException, IOException {
    RSAPrivateKey rsa = RSAPrivateKey.getInstance(kp.getPrivateKeyInfo().parsePrivateKey());

    try {/*  w ww  .  j  av  a 2 s .c o m*/
        KeyFactory factory = KeyFactory.getInstance("RSA");

        RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getPublicExponent());
        PublicKey pub = factory.generatePublic(pubSpec);

        RSAPrivateCrtKeySpec keySpec = new RSAPrivateCrtKeySpec(rsa.getModulus(), rsa.getPublicExponent(),
                rsa.getPrivateExponent(), rsa.getPrime1(), rsa.getPrime2(), rsa.getExponent1(),
                rsa.getExponent2(), rsa.getCoefficient());
        PrivateKey key = factory.generatePrivate(keySpec);

        return new KeyPair(pub, key);

    } catch (GeneralSecurityException gse) {
        throw new CryptoException(gse);
    }
}

From source file:io.apigee.trireme.crypto.RSAConverter.java

License:Open Source License

public static KeyPair convertKeyPair(PEMKeyPair kp) throws CryptoException, IOException {
    RSAPrivateKey rsa = RSAPrivateKey.getInstance(kp.getPrivateKeyInfo().parsePrivateKey());

    try {/* w  w  w.j  ava 2  s  .co  m*/
        KeyFactory factory = KeyFactory.getInstance("RSA");

        RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getPublicExponent());
        PublicKey pub = factory.generatePublic(pubSpec);

        RSAPrivateCrtKeySpec keySpec = new RSAPrivateCrtKeySpec(rsa.getModulus(), rsa.getPublicExponent(),
                rsa.getPrivateExponent(), rsa.getPrime1(), rsa.getPrime2(), rsa.getExponent1(),
                rsa.getExponent2(), rsa.getCoefficient());
        PrivateKey key = factory.generatePrivate(keySpec);

        return new KeyPair(pub, key);

    } catch (GeneralSecurityException gse) {
        throw new CryptoException(gse);
    }
}

From source file:jazmin.server.relay.udp.webrtc.TlsUtils.java

License:Open Source License

static AsymmetricKeyParameter loadPrivateKeyResource(String resource) throws IOException {
    PemObject pem = loadPemResource(resource);
    if (pem.getType().endsWith("RSA PRIVATE KEY")) {
        RSAPrivateKey rsa = RSAPrivateKey.getInstance(pem.getContent());
        return new RSAPrivateCrtKeyParameters(rsa.getModulus(), rsa.getPublicExponent(),
                rsa.getPrivateExponent(), rsa.getPrime1(), rsa.getPrime2(), rsa.getExponent1(),
                rsa.getExponent2(), rsa.getCoefficient());
    }/*from   w w  w.  ja  v a 2s . c o  m*/
    if (pem.getType().endsWith("PRIVATE KEY")) {
        return PrivateKeyFactory.createKey(pem.getContent());
    }
    throw new IllegalArgumentException("'resource' doesn't specify a valid private key");
}

From source file:org.cloudfoundry.identity.uaa.oauth.jwk.RsaJsonWebKeyTests.java

License:Open Source License

private KeyPair parseKeyPair(String pemData) {
    Matcher m = PEM_DATA.matcher(pemData.trim());

    if (!m.matches()) {
        throw new IllegalArgumentException("String is not PEM encoded data");
    }/*  www . jav a 2 s. com*/

    String type = m.group(1);
    final byte[] content = b64Decode(utf8Encode(m.group(2)));

    PublicKey publicKey;
    PrivateKey privateKey = null;

    try {
        KeyFactory fact = KeyFactory.getInstance("RSA");
        if (type.equals("RSA PRIVATE KEY")) {
            ASN1Sequence seq = ASN1Sequence.getInstance(content);
            if (seq.size() != 9) {
                throw new IllegalArgumentException("Invalid RSA Private Key ASN1 sequence.");
            }
            org.bouncycastle.asn1.pkcs.RSAPrivateKey key = org.bouncycastle.asn1.pkcs.RSAPrivateKey
                    .getInstance(seq);
            RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
            RSAPrivateCrtKeySpec privSpec = new RSAPrivateCrtKeySpec(key.getModulus(), key.getPublicExponent(),
                    key.getPrivateExponent(), key.getPrime1(), key.getPrime2(), key.getExponent1(),
                    key.getExponent2(), key.getCoefficient());
            publicKey = fact.generatePublic(pubSpec);
            privateKey = fact.generatePrivate(privSpec);
        } else if (type.equals("PUBLIC KEY")) {
            KeySpec keySpec = new X509EncodedKeySpec(content);
            publicKey = fact.generatePublic(keySpec);
        } else if (type.equals("RSA PUBLIC KEY")) {
            ASN1Sequence seq = ASN1Sequence.getInstance(content);
            org.bouncycastle.asn1.pkcs.RSAPublicKey key = org.bouncycastle.asn1.pkcs.RSAPublicKey
                    .getInstance(seq);
            RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
            publicKey = fact.generatePublic(pubSpec);
        } else {
            throw new IllegalArgumentException(type + " is not a supported format");
        }

        return new KeyPair(publicKey, privateKey);
    } catch (InvalidKeySpecException e) {
        throw new RuntimeException(e);
    } catch (NoSuchAlgorithmException e) {
        throw new IllegalStateException(e);
    }
}

From source file:org.cloudfoundry.identity.uaa.oauth.SignerProvider.java

License:Open Source License

static KeyPair parseKeyPair(String pemData) {
    Matcher m = PEM_DATA.matcher(pemData.trim());

    if (!m.matches()) {
        throw new IllegalArgumentException("String is not PEM encoded data");
    }/*  w  w w .  j  a v  a2 s. com*/

    String type = m.group(1);
    final byte[] content = b64Decode(utf8Encode(m.group(2)));

    PublicKey publicKey;
    PrivateKey privateKey = null;

    try {
        KeyFactory fact = KeyFactory.getInstance("RSA");
        if (type.equals("RSA PRIVATE KEY")) {
            ASN1Sequence seq = ASN1Sequence.getInstance(content);
            if (seq.size() != 9) {
                throw new IllegalArgumentException("Invalid RSA Private Key ASN1 sequence.");
            }
            org.bouncycastle.asn1.pkcs.RSAPrivateKey key = org.bouncycastle.asn1.pkcs.RSAPrivateKey
                    .getInstance(seq);
            RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
            RSAPrivateCrtKeySpec privSpec = new RSAPrivateCrtKeySpec(key.getModulus(), key.getPublicExponent(),
                    key.getPrivateExponent(), key.getPrime1(), key.getPrime2(), key.getExponent1(),
                    key.getExponent2(), key.getCoefficient());
            publicKey = fact.generatePublic(pubSpec);
            privateKey = fact.generatePrivate(privSpec);
        } else if (type.equals("PUBLIC KEY")) {
            KeySpec keySpec = new X509EncodedKeySpec(content);
            publicKey = fact.generatePublic(keySpec);
        } else if (type.equals("RSA PUBLIC KEY")) {
            ASN1Sequence seq = ASN1Sequence.getInstance(content);
            org.bouncycastle.asn1.pkcs.RSAPublicKey key = org.bouncycastle.asn1.pkcs.RSAPublicKey
                    .getInstance(seq);
            RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
            publicKey = fact.generatePublic(pubSpec);
        } else {
            throw new IllegalArgumentException(type + " is not a supported format");
        }

        return new KeyPair(publicKey, privateKey);
    } catch (InvalidKeySpecException e) {
        throw new RuntimeException(e);
    } catch (NoSuchAlgorithmException e) {
        throw new IllegalStateException(e);
    }
}

From source file:org.opcfoundation.ua.transport.security.BcCryptoProvider.java

License:Open Source License

private AsymmetricBlockCipher getAsymmetricCipher(SecurityAlgorithm algorithm, RSAPrivateKey privateKey)
        throws ServiceResultException {
    CipherParameters params = new RSAPrivateCrtKeyParameters(privateKey.getModulus(),
            privateKey.getPublicExponent(), privateKey.getPrivateExponent(), privateKey.getPrime1(),
            privateKey.getPrime2(), privateKey.getExponent1(), privateKey.getExponent2(),
            privateKey.getCoefficient());
    return getAsymmetricCipher(false, algorithm, params);
}

From source file:org.opcfoundation.ua.transport.security.BcCryptoProvider.java

License:Open Source License

private Signer getAsymmetricSigner(boolean forSigning, SecurityAlgorithm algorithm, RSAPrivateKey privateKey)
        throws ServiceResultException {

    CipherParameters params = new RSAPrivateCrtKeyParameters(privateKey.getModulus(),
            privateKey.getPublicExponent(), privateKey.getPrivateExponent(), privateKey.getPrime1(),
            privateKey.getPrime2(), privateKey.getExponent1(), privateKey.getExponent2(),
            privateKey.getCoefficient());
    return getAsymmetricSigner(forSigning, algorithm, params);

}

From source file:org.restcomm.sbc.media.dtls.TlsUtils.java

License:Open Source License

static AsymmetricKeyParameter loadPrivateKeyResource(String resource) throws IOException {
    PemObject pem = loadPemResource(resource);
    if (LOGGER.isTraceEnabled()) {
        LOGGER.trace("load Private key =" + resource);
        LOGGER.trace("type             =" + pem.getType());
    }/*from www. j  av  a 2 s. c  o m*/
    if (pem.getType().endsWith("RSA PRIVATE KEY")) {
        RSAPrivateKey rsa = RSAPrivateKey.getInstance(pem.getContent());
        return new RSAPrivateCrtKeyParameters(rsa.getModulus(), rsa.getPublicExponent(),
                rsa.getPrivateExponent(), rsa.getPrime1(), rsa.getPrime2(), rsa.getExponent1(),
                rsa.getExponent2(), rsa.getCoefficient());
    }
    if (pem.getType().endsWith("PRIVATE KEY")) {
        AsymmetricKeyParameter pKey = PrivateKeyFactory.createKey(pem.getContent());
        if (LOGGER.isTraceEnabled()) {
            LOGGER.trace("key =" + pKey.isPrivate());
            LOGGER.trace(pKey.toString());
        }
        return pKey;
    }
    throw new IllegalArgumentException("'resource' doesn't specify a valid private key");
}

From source file:org.springframework.security.rsa.crypto.RsaKeyHelper.java

License:Apache License

static KeyPair parseKeyPair(String pemData) {
    Matcher m = PEM_DATA.matcher(pemData.trim());

    if (!m.matches()) {
        try {/*from   w ww  .  j av a  2s.  c  o m*/
            return new KeyPair(extractPublicKey(pemData), null);
        } catch (Exception e) {
            throw new IllegalArgumentException(
                    "String is not PEM encoded data, nor a public key encoded for ssh");
        }
    }

    String type = m.group(1);
    final byte[] content = base64Decode(m.group(2));

    PublicKey publicKey;
    PrivateKey privateKey = null;

    try {
        KeyFactory fact = KeyFactory.getInstance("RSA");
        if (type.equals("RSA PRIVATE KEY")) {
            ASN1Sequence seq = ASN1Sequence.getInstance(content);
            if (seq.size() != 9) {
                throw new IllegalArgumentException("Invalid RSA Private Key ASN1 sequence.");
            }
            org.bouncycastle.asn1.pkcs.RSAPrivateKey key = org.bouncycastle.asn1.pkcs.RSAPrivateKey
                    .getInstance(seq);
            RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
            RSAPrivateCrtKeySpec privSpec = new RSAPrivateCrtKeySpec(key.getModulus(), key.getPublicExponent(),
                    key.getPrivateExponent(), key.getPrime1(), key.getPrime2(), key.getExponent1(),
                    key.getExponent2(), key.getCoefficient());
            publicKey = fact.generatePublic(pubSpec);
            privateKey = fact.generatePrivate(privSpec);
        } else if (type.equals("PUBLIC KEY")) {
            KeySpec keySpec = new X509EncodedKeySpec(content);
            publicKey = fact.generatePublic(keySpec);
        } else if (type.equals("RSA PUBLIC KEY")) {
            ASN1Sequence seq = ASN1Sequence.getInstance(content);
            org.bouncycastle.asn1.pkcs.RSAPublicKey key = org.bouncycastle.asn1.pkcs.RSAPublicKey
                    .getInstance(seq);
            RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
            publicKey = fact.generatePublic(pubSpec);
        } else {
            throw new IllegalArgumentException(type + " is not a supported format");
        }

        return new KeyPair(publicKey, privateKey);
    } catch (InvalidKeySpecException e) {
        throw new RuntimeException(e);
    } catch (NoSuchAlgorithmException e) {
        throw new IllegalStateException(e);
    }
}