Example usage for org.bouncycastle.openssl PEMParser readObject

List of usage examples for org.bouncycastle.openssl PEMParser readObject

Introduction

In this page you can find the example usage for org.bouncycastle.openssl PEMParser readObject.

Prototype

public Object readObject() throws IOException 

Source Link

Document

Read the next PEM object attempting to interpret the header and create a higher level object from the content.

Usage

From source file:com.github.khazrak.jdocker.ssl.KeyStoreUtil.java

License:Apache License

static <T> T loadPEM(String keyPath) throws IOException {
    try (BufferedReader reader = new BufferedReader(new FileReader(keyPath))) {
        PEMParser parser = new PEMParser(reader);
        return (T) parser.readObject();
    }/*  ww w. j  a  va  2 s.c om*/
}

From source file:com.google.examples.JOSEToolBase.java

License:Apache License

public static PrivateKey decodePrivateKey(String privateKeyString, String password) throws KeyParseException {
    try {/*w ww .  j a  v  a  2  s .c o m*/
        JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
        privateKeyString = reformIndents(privateKeyString);
        PEMParser pemParser = new PEMParser(new StringReader(privateKeyString));
        Object object = pemParser.readObject();
        if (object == null) {
            throw new KeyParseException("unable to read anything when decoding private key");
        }

        KeyPair kp = null;

        //LOGGER.info(String.format("decodePrivateKey, %s", object.getClass().getName()));
        if (object instanceof PKCS8EncryptedPrivateKeyInfo) {
            // produced by "openssl genpkey" or  the series of commands reqd to sign an ec key
            //LOGGER.info("decodePrivateKey, encrypted PrivateKeyInfo");
            PKCS8EncryptedPrivateKeyInfo pkcs8EncryptedPrivateKeyInfo = (PKCS8EncryptedPrivateKeyInfo) object;
            JceOpenSSLPKCS8DecryptorProviderBuilder decryptorProviderBuilder = new JceOpenSSLPKCS8DecryptorProviderBuilder();
            InputDecryptorProvider decryptorProvider = decryptorProviderBuilder.build(password.toCharArray());
            PrivateKeyInfo privateKeyInfo = pkcs8EncryptedPrivateKeyInfo
                    .decryptPrivateKeyInfo(decryptorProvider);
            return (PrivateKey) converter.getPrivateKey(privateKeyInfo);
        }

        if (object instanceof PrivateKeyInfo) {
            // produced by openssl genpkey without encryption
            return (PrivateKey) converter.getPrivateKey((PrivateKeyInfo) object);
        }

        if (object instanceof PEMEncryptedKeyPair) {
            // produced by "openssl genrsa" or "openssl ec -genkey"
            // LOGGER.info("decodePrivateKey, encrypted keypair");
            PEMEncryptedKeyPair encryptedKeyPair = (PEMEncryptedKeyPair) object;
            PEMDecryptorProvider decryptorProvider = new JcePEMDecryptorProviderBuilder()
                    .build(password.toCharArray());
            kp = converter.getKeyPair(encryptedKeyPair.decryptKeyPair(decryptorProvider));
        } else if (object instanceof PEMKeyPair) {
            //LOGGER.info("decodePrivateKey, un-encrypted keypair");
            PEMKeyPair unencryptedKeyPair = (PEMKeyPair) object;
            kp = converter.getKeyPair(unencryptedKeyPair);
        } else {
            //LOGGER.error("decodePrivateKey, unknown object type {}", object.getClass().getName());
            throw new KeyParseException("unknown object type when decoding private key");
        }

        return (PrivateKey) kp.getPrivate();
    } catch (KeyParseException exc0) {
        throw exc0;
    } catch (Exception exc1) {
        throw new KeyParseException("cannot instantiate private key", exc1);
    }
}

From source file:com.google.examples.JOSEToolBase.java

License:Apache License

public static PublicKey decodePublicKey(String publicKeyString) throws KeyParseException {
    try {/* w w  w.j  av a 2  s .  c o m*/
        JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
        publicKeyString = reformIndents(publicKeyString);
        PEMParser pemParser = new PEMParser(new StringReader(publicKeyString));
        Object object = pemParser.readObject();
        if (object == null) {
            throw new KeyParseException("unable to read anything when decoding public key");
        }
        return converter.getPublicKey((org.bouncycastle.asn1.x509.SubjectPublicKeyInfo) object);
    } catch (KeyParseException exc0) {
        throw exc0;
    } catch (Exception exc1) {
        throw new KeyParseException("cannot instantiate public key", exc1);
    }
}

From source file:com.hurence.logisland.connect.opc.ua.OpcUaSourceTask.java

License:Apache License

private PrivateKey decodePemPrivateKey(String privateKey) {
    try {//from   www . j a  va  2  s.c  o m
        PEMParser pemParser = new PEMParser(new StringReader(privateKey));
        Object object = pemParser.readObject();
        JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
        if (object instanceof PEMEncryptedKeyPair) {
            throw new UnsupportedOperationException("Encrypted keys are not yet supported");
        }
        PEMKeyPair ukp = (PEMKeyPair) object;
        KeyPair keyPair = converter.getKeyPair(ukp);
        return keyPair.getPrivate();
    } catch (Exception e) {
        throw new IllegalArgumentException("Unable to decode private key", e);
    }
}

From source file:com.hypersocket.certs.X509CertificateUtils.java

License:Open Source License

public static X509Certificate[] loadCertificateChainFromPEM(InputStream certfile)
        throws IOException, CertificateException, FileFormatException {

    List<X509Certificate> certs = new ArrayList<X509Certificate>();

    PEMParser parser = new PEMParser(new InputStreamReader(certfile));

    try {/*from  w  w  w  .  ja  va 2s .  co  m*/

        Object obj = null;
        while ((obj = parser.readObject()) != null) {

            if (obj instanceof X509CertificateHolder) {
                certs.add(new JcaX509CertificateConverter().setProvider("BC")
                        .getCertificate((X509CertificateHolder) obj));
            } else {
                throw new FileFormatException("Failed to read X509Certificate from InputStream provided");
            }
        }

        return certs.toArray(new X509Certificate[0]);

    } finally {
        parser.close();
    }
}

From source file:com.hypersocket.certs.X509CertificateUtils.java

License:Open Source License

public static X509Certificate loadCertificateFromPEM(InputStream certfile)
        throws IOException, CertificateException, FileFormatException {
    PEMParser parser = new PEMParser(new InputStreamReader(certfile));

    try {/*  w w w. ja  va  2  s.c  o  m*/

        Object obj = parser.readObject();

        if (obj instanceof X509CertificateHolder) {
            return new JcaX509CertificateConverter().setProvider("BC")
                    .getCertificate((X509CertificateHolder) obj);
        } else {
            throw new FileFormatException("Failed to read X509Certificate from InputStream provided");
        }

    } finally {
        parser.close();
    }
}

From source file:com.hypersocket.certs.X509CertificateUtils.java

License:Open Source License

public static KeyPair loadKeyPairFromPEM(InputStream keyfile, char[] passphrase)
        throws InvalidPassphraseException, CertificateException, FileFormatException {

    PEMParser parser = new PEMParser(new InputStreamReader(keyfile));
    JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
    try {//from  w  w w. ja  v a  2  s .c om

        Object privatekey = parser.readObject();

        if (privatekey instanceof PEMEncryptedKeyPair) {
            try {
                privatekey = ((PEMEncryptedKeyPair) privatekey)
                        .decryptKeyPair(new JcePEMDecryptorProviderBuilder().build(passphrase));
            } catch (Exception e) {
                throw new InvalidPassphraseException(e);
            }
        } else if (privatekey instanceof PKCS8EncryptedPrivateKeyInfo) {
            try {
                privatekey = converter
                        .getPrivateKey(((PKCS8EncryptedPrivateKeyInfo) privatekey).decryptPrivateKeyInfo(
                                new JceOpenSSLPKCS8DecryptorProviderBuilder().build(passphrase)));
            } catch (Exception e) {
                throw new InvalidPassphraseException(e);
            }
        }

        if (privatekey instanceof PEMKeyPair) {
            return loadKeyPair((PEMKeyPair) privatekey);
        } else if (privatekey instanceof RSAPrivateCrtKey) {
            return loadKeyPair((RSAPrivateCrtKey) privatekey);
        } else if (privatekey instanceof PrivateKeyInfo) {
            PrivateKeyInfo i = (PrivateKeyInfo) privatekey;
            PrivateKey prv = converter.getPrivateKey(i);
            if (prv instanceof RSAPrivateCrtKey) {
                return loadKeyPair((RSAPrivateCrtKey) prv);
            } else {
                throw new FileFormatException("Unsupported private key type");
            }
        } else {
            throw new FileFormatException(
                    "The file doesn't seem to have any supported key types obj=" + privatekey);
        }

    } catch (IOException ex) {
        throw new CertificateException("Failed to read from key file", ex);
    } finally {
        try {
            parser.close();
        } catch (IOException e) {
        }
    }
}

From source file:com.jcs_java_sdk.Utils.java

License:Open Source License

public static PrivateKey readPrivateKey(String privateKeyPath, String keyPassword) throws IOException {

    FileReader fileReader = new FileReader(privateKeyPath);
    PEMParser keyReader = new PEMParser(fileReader);

    JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
    PEMDecryptorProvider decryptionProv = new JcePEMDecryptorProviderBuilder().build(keyPassword.toCharArray());

    Object keyPair = keyReader.readObject();
    PrivateKeyInfo keyInfo;/*from w  w  w  .  j av  a  2 s.  c  o  m*/

    if (keyPair instanceof PEMEncryptedKeyPair) {
        PEMKeyPair decryptedKeyPair = ((PEMEncryptedKeyPair) keyPair).decryptKeyPair(decryptionProv);
        keyInfo = decryptedKeyPair.getPrivateKeyInfo();
    } else {
        keyInfo = ((PEMKeyPair) keyPair).getPrivateKeyInfo();
    }

    keyReader.close();
    return converter.getPrivateKey(keyInfo);
}

From source file:com.liferay.sync.engine.lan.util.LanPEMParserUtil.java

License:Open Source License

public static PrivateKey parsePrivateKey(String privateKey) throws Exception {

    StringBuilder sb = new StringBuilder();

    sb.append("-----BEGIN PRIVATE KEY-----\n");
    sb.append(privateKey);/*  w  w w  .j  a v  a2  s .  c  om*/

    if (!privateKey.endsWith("\n")) {
        sb.append("\n");
    }

    sb.append("-----END PRIVATE KEY-----");

    PEMParser pemParser = new PEMParser(new StringReader(sb.toString()));

    JcaPEMKeyConverter jcaPEMKeyConverter = new JcaPEMKeyConverter();

    return jcaPEMKeyConverter.getPrivateKey((PrivateKeyInfo) pemParser.readObject());
}

From source file:com.liferay.sync.engine.lan.util.LanPEMParserUtil.java

License:Open Source License

public static X509Certificate parseX509Certificate(String certificate) throws Exception {

    StringBuilder sb = new StringBuilder();

    sb.append("-----BEGIN CERTIFICATE-----\n");
    sb.append(certificate);//from   w  w  w. j a va 2s  .co  m

    if (!certificate.endsWith("\n")) {
        sb.append("\n");
    }

    sb.append("-----END CERTIFICATE-----");

    PEMParser pemParser = new PEMParser(new StringReader(sb.toString()));

    JcaX509CertificateConverter jcaX509CertificateConverter = new JcaX509CertificateConverter();

    return jcaX509CertificateConverter.getCertificate((X509CertificateHolder) pemParser.readObject());
}