List of usage examples for org.bouncycastle.openssl PEMParser PEMParser
public PEMParser(Reader reader)
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; }