Example usage for org.bouncycastle.openssl PEMParser PEMParser

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

Introduction

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

Prototype

public PEMParser(Reader reader) 

Source Link

Document

Create a new PEMReader

Usage

From source file:uk.ac.cam.gpe21.droidssl.mitm.crypto.cert.CertificateUtils.java

License:Apache License

public static X509Certificate readCertificate(Reader reader) throws IOException {
    // TODO share with CertificateAuthority's own implementation
    try (PEMParser parser = new PEMParser(reader)) {
        Object object = parser.readObject();
        if (!(object instanceof X509CertificateHolder))
            throw new IOException("File does not contain a certificate");

        X509CertificateHolder certificate = (X509CertificateHolder) object;
        return new JcaX509CertificateConverter().getCertificate(certificate);
    } catch (CertificateException ex) {
        throw new IOException(ex);
    }//from  w w  w  .j a v a  2  s  .  c  o  m
}

From source file:uk.ac.cam.gpe21.droidssl.mitm.crypto.key.KeyUtils.java

License:Apache License

public static PrivateKey readPrivateKey(Reader reader) throws IOException {
    try (PEMParser parser = new PEMParser(reader)) {
        Object object = parser.readObject();
        if (!(object instanceof PEMKeyPair))
            throw new IOException("File does not contain a key");

        PEMKeyPair pair = (PEMKeyPair) object;

        // TODO merge messy conversion logic with that below */
        AsymmetricKeyParameter privateKey = PrivateKeyFactory.createKey(pair.getPrivateKeyInfo());
        PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.createPrivateKeyInfo(privateKey);
        KeyFactory keyFactory = new DefaultJcaJceHelper().createKeyFactory("RSA"); // TODO should we really assume RSA?
        return keyFactory.generatePrivate(new PKCS8EncodedKeySpec(privateKeyInfo.getEncoded()));
    } catch (NoSuchAlgorithmException | InvalidKeySpecException ex) {
        throw new IOException(ex);
    }/*from w ww.ja v a  2  s .  c  o m*/
}

From source file:uk.co.develop4.security.utils.decoders.DecoderUtils.java

License:Apache License

private static KeyPair getKeyPairFromOpenSslPemFile(String fileName, String passphrase, String providerName)
        throws IOException {
    Reader fRd = null;/*from w w w . ja v  a  2s. c  o m*/
    PEMParser pemParser = null;
    KeyPair keypair = null;
    try {
        JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider(providerName);
        PEMDecryptorProvider pemProv = new JcePEMDecryptorProviderBuilder().setProvider(providerName)
                .build(passphrase.toCharArray());
        InputDecryptorProvider pkcs8Prov = new JceOpenSSLPKCS8DecryptorProviderBuilder()
                .build(passphrase.toCharArray());
        //res = this.getClass().getResourceAsStream(fileName);
        File file = DecoderUtils.isFile(fileName);
        FileReader fr = new FileReader(file);
        fRd = new BufferedReader(fr);
        pemParser = new PEMParser(fRd);
        Object obj = pemParser.readObject();

        if (obj instanceof PEMEncryptedKeyPair) {
            keypair = converter.getKeyPair(((PEMEncryptedKeyPair) obj).decryptKeyPair(pemProv));
        } else if (obj instanceof PKCS8EncryptedPrivateKeyInfo) {
            keypair = new KeyPair(null, converter
                    .getPrivateKey(((PKCS8EncryptedPrivateKeyInfo) obj).decryptPrivateKeyInfo(pkcs8Prov)));
        } else if (obj instanceof SubjectPublicKeyInfo) {
            keypair = new KeyPair((PublicKey) converter.getPublicKey((SubjectPublicKeyInfo) obj), null);
        } else if (obj instanceof X509CertificateHolder) {
            SubjectPublicKeyInfo sub = (SubjectPublicKeyInfo) ((X509CertificateHolder) obj)
                    .getSubjectPublicKeyInfo();
            keypair = new KeyPair((PublicKey) converter.getPublicKey((SubjectPublicKeyInfo) sub), null);
        } else {
            keypair = converter.getKeyPair((PEMKeyPair) obj);
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        pemParser.close();
    }
    return keypair;
}