Java Examples for org.bouncycastle.openssl.PEMReader

The following java examples will help you to understand the usage of org.bouncycastle.openssl.PEMReader. These source code samples are taken from different open source projects.

Example 1
Project: candlepin-master  File: DefaultEntitlementCertServiceAdapterTest.java View source code
@BeforeClass
public static void keyPair() throws Exception {
    ClassLoader cl = DefaultEntitlementCertServiceAdapterTest.class.getClassLoader();
    InputStream keyStream = cl.getResourceAsStream("test.key");
    PEMReader reader = null;
    keyPair = null;
    try {
        reader = new PEMReader(new InputStreamReader(keyStream));
        keyPair = (KeyPair) reader.readObject();
    } finally {
        if (reader != null) {
            reader.close();
        }
    }
}
Example 2
Project: crash-master  File: KeyPairUtils.java View source code
public static Object readKey(Reader reader) throws Exception {
    try {
        PEMParser pemParser = new PEMParser(reader);
        try {
            return pemParser.readObject();
        } finally {
            pemParser.close();
        }
    } catch (NoClassDefFoundError e) {
        Class<?> pemReaderClass = Class.forName("org.bouncycastle.openssl.PEMReader");
        PemReader r = (PemReader) pemReaderClass.getConstructor(Reader.class).newInstance(reader);
        try {
            return pemReaderClass.getMethod("readObject").invoke(r);
        } finally {
            r.close();
        }
    }
}
Example 3
Project: eucalyptus-fork-2.0-master  File: WSSecurity.java View source code
public static X509Certificate verifySignature(final Element securityNode, final XMLSignature sig) throws WSSecurityException, XMLSignatureException, XMLSecurityException {
    final SecurityTokenReference secRef = WSSecurity.getSecurityTokenReference(sig.getKeyInfo());
    final Reference tokenRef = secRef.getReference();
    Element bstDirect = WSSecurityUtil.getElementByWsuId(securityNode.getOwnerDocument(), tokenRef.getURI());
    if (bstDirect == null) {
        bstDirect = WSSecurityUtil.getElementByGenId(securityNode.getOwnerDocument(), tokenRef.getURI());
        if (bstDirect == null) {
            throw new WSSecurityException(WSSecurityException.INVALID_SECURITY, "noCert");
        }
    }
    BinarySecurity token = new BinarySecurity(bstDirect);
    String type = token.getValueType();
    X509Certificate cert = null;
    try {
        if (useBc) {
            Node node = bstDirect.getFirstChild();
            String certStr = ("-----BEGIN CERTIFICATE-----\n" + (node == null || !(node instanceof Text) ? null : ((Text) node).getData()) + "\n-----END CERTIFICATE-----\n");
            ByteArrayInputStream pemByteIn = new ByteArrayInputStream(certStr.getBytes());
            PEMReader in = new PEMReader(new InputStreamReader(pemByteIn));
            try {
                cert = (X509Certificate) in.readObject();
            } catch (Throwable e) {
                LOG.error(e, e);
            }
        } else {
            X509Security x509 = new X509Security(bstDirect);
            byte[] bstToken = x509.getToken();
            CertificateFactory factory = getCertificateFactory();
            cert = (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(bstToken));
        }
    } catch (Exception e) {
        LOG.error(e, e);
        throw new WSSecurityException(WSSecurityException.UNSUPPORTED_SECURITY_TOKEN, "unsupportedBinaryTokenType", new Object[] { type });
    }
    if (!sig.checkSignatureValue(cert)) {
        throw new WSSecurityException(WSSecurityException.FAILED_CHECK);
    }
    verifyReferences(sig);
    return cert;
}
Example 4
Project: jts-tanks-master  File: KeyStore.java View source code
private void loadRSAPair() {
    FileReader fileReader = null;
    PEMReader r = null;
    try {
        fileReader = new FileReader(new File("key.pem"));
        r = new PEMReader(fileReader);
        keyPair = (KeyPair) r.readObject();
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            if (r != null)
                r.close();
            if (fileReader != null)
                fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Example 5
Project: jruby-openssl-master  File: BouncyCastlePEMHandler.java View source code
@SuppressWarnings("unchecked")
public Object readPEM(Reader read, String password) throws Exception {
    // NOTE: class not longer available since BC 1.50 :
    // return new PEMReader(read, new BasicPasswordFinder(password)).readObject();
    Class PEMReader = Class.forName("org.bouncycastle.openssl.PEMReader");
    Object pemReader = PEMReader.getConstructor(java.io.Reader.class, PasswordFinder.class).newInstance(read, new BasicPasswordFinder(password));
    return PEMReader.getMethod("readObject").invoke(pemReader);
}
Example 6
Project: billy-master  File: KeyGenerator.java View source code
private KeyPair getKeyPair() {
    PEMReader pemReader = new PEMReader(new StringReader(this.getKeyFromFile()));
    KeyPair pair = null;
    try {
        pair = (KeyPair) pemReader.readObject();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        IOUtils.closeQuietly(pemReader);
    }
    return pair;
}
Example 7
Project: eid-applet-master  File: ChannelBindingConfigServlet.java View source code
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Provider provider = null;
    if (null == Security.getProvider(BouncyCastleProvider.PROVIDER_NAME)) {
        provider = new BouncyCastleProvider();
        Security.addProvider(provider);
    }
    String serverCertificatePem = request.getParameter("serverCertificate");
    PEMReader pemReader = new PEMReader(new StringReader(serverCertificatePem));
    Object object = pemReader.readObject();
    pemReader.close();
    if (object instanceof X509Certificate) {
        X509Certificate serverCertificate = (X509Certificate) object;
        HttpSession httpSession = request.getSession();
        httpSession.setAttribute("test.be.fedict.eid.applet.model.ChannelBindingServiceBean.serverCertificate", serverCertificate);
    }
    response.sendRedirect("channel-binding.jsp");
    if (null != provider) {
        Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME);
    }
}
Example 8
Project: nimbus_ezpz_ca-master  File: SigningPolicy.java View source code
public static String getPolicyString(String caCertPath) throws Exception {
    final X509Certificate cert;
    final FileReader fr = new FileReader(caCertPath);
    try {
        Security.addProvider(new BouncyCastleProvider());
        final PEMReader reader = new PEMReader(fr, null, BouncyCastleProvider.PROVIDER_NAME);
        try {
            cert = (X509Certificate) reader.readObject();
        } finally {
            reader.close();
        }
    } finally {
        fr.close();
    }
    // access_id_CA
    final X500Principal subjectDN = cert.getSubjectX500Principal();
    final String DN = subjectDN.getName(X500Principal.RFC2253);
    final String access_id_CA = CertUtil.toGlobusID(DN, false);
    // cond_subjects
    final String signingtarget = EzPzCA.deriveSigningTargetString(cert);
    final String cond_subjectsRFC2253 = EzPzCA.getTargetDNfromSchema(signingtarget, "*");
    final String cond_subjects = CertUtil.toGlobusID(cond_subjectsRFC2253, true);
    final StringBuilder sb = new StringBuilder(PREFIX);
    sb.append("\n\n access_id_CA      X509         '");
    sb.append(access_id_CA);
    sb.append("'\n\n pos_rights        globus        CA:sign\n\n cond_subjects     globus       '\"");
    sb.append(cond_subjects);
    sb.append("\"'\n\n");
    sb.append(SUFFIX);
    return sb.toString();
}
Example 9
Project: org.parallelj-master  File: URLKeyPairProvider.java View source code
@Override
public Iterable<KeyPair> loadKeys() {
    if (!SecurityUtils.isBouncyCastleRegistered()) {
        throw new IllegalStateException("BouncyCastle must be registered as a JCE provider");
    }
    List<KeyPair> keys = new ArrayList<KeyPair>();
    if (key != null) {
        try {
            URLConnection conn = this.key.openConnection();
            byte[] content = IO.readAsBytes(conn.getInputStream());
            PEMReader r = new PEMReader(new InputStreamReader(new ByteArrayInputStream(content)));
            try {
                Object o = r.readObject();
                if (o instanceof KeyPair) {
                    keys.add((KeyPair) o);
                }
            } finally {
                r.close();
            }
        } catch (Exception e) {
            ExtensionSshMessageKind.ISH0001.format(key, e);
        }
    }
    return keys;
}
Example 10
Project: Asynchronous-SSHD-master  File: FileKeyPairProvider.java View source code
public KeyPair[] loadKeys() {
    if (!SecurityUtils.isBouncyCastleRegistered()) {
        throw new IllegalStateException("BouncyCastle must be registered as a JCE provider");
    }
    List<KeyPair> keys = new ArrayList<KeyPair>();
    for (int i = 0; i < files.length; i++) {
        try {
            PEMReader r = new PEMReader(new InputStreamReader(new FileInputStream(files[i])), passwordFinder);
            try {
                Object o = r.readObject();
                if (o instanceof KeyPair) {
                    keys.add((KeyPair) o);
                }
            } finally {
                r.close();
            }
        } catch (Exception e) {
            LogUtils.info(LOG, "Unable to read key {0}: {1}", files[i], e);
        }
    }
    return keys.toArray(new KeyPair[keys.size()]);
}
Example 11
Project: atlas-lb-master  File: PemUtils.java View source code
public static Object fromPem(byte[] pem) throws PemException {
    Object out;
    ByteArrayInputStream bas;
    InputStreamReader isr;
    PEMReader pr;
    if (pem == null) {
        throw new NotAPemObject("byte[] parameter pem in call to PemUtils.fromPem(byte[] pem) was null");
    }
    bas = new ByteArrayInputStream(pem);
    isr = new InputStreamReader(bas);
    pr = new PEMReader(isr);
    try {
        out = pr.readObject();
        pr.close();
        isr.close();
        bas.close();
    } catch (IOException ex) {
        throw new PemException("Could not read PEM data", ex);
    }
    if (out == null) {
        throw new NotAPemObject("Returned obj instance was null in call to Object obj = Object fromPem(bytes[] pem)");
    }
    return out;
}
Example 12
Project: GNDMS-master  File: ExtMyProxy.java View source code
/**
     * Retrieves delegated credentials from the MyProxy server.
     *
     * @param  credential 
     *         The local GSI credentials to use for authentication.
     *         Can be set to null if no local credentials.
     * @param  params
     *         The parameters for the get operation.
     * @return GSSCredential 
     *         The retrieved delegated credentials.
     * @exception MyProxyException
     *         If an error occurred during the operation.
     */
public GSSCredential retrieve(GSSCredential credential, final GetParams params) throws MyProxyException {
    if (params == null) {
        throw new IllegalArgumentException("params == null");
    }
    if (credential == null) {
        try {
            credential = getAnonymousCredential();
        } catch (GSSException e) {
            throw new MyProxyException("Failed to create anonymous credentials", e);
        }
    }
    String msg = params.makeRequest();
    Socket gsiSocket = null;
    OutputStream out = null;
    InputStream in = null;
    try {
        gsiSocket = getSocket(credential);
        if (credential.getName().isAnonymous()) {
            this.context.requestAnonymity(true);
        }
        out = gsiSocket.getOutputStream();
        in = gsiSocket.getInputStream();
        // send message
        out.write(msg.getBytes());
        out.flush();
        if (logger.isDebugEnabled()) {
            logger.debug("Req sent:" + params);
        }
        // may require authz handshake / without trustedroots
        handleReply(in, out, params.getAuthzCreds(), false);
        // start delegation - generate key pair
        KeyPair keyPair = CertUtil.generateKeyPair("RSA", DEFAULT_KEYBITS);
        BouncyCastleCertProcessingFactory certFactory = BouncyCastleCertProcessingFactory.getDefault();
        byte[] req = null;
        if (credential.getName().isAnonymous()) {
            req = certFactory.createCertificateRequest("CN=ignore", keyPair);
        } else {
            GlobusGSSCredentialImpl pkiCred = (GlobusGSSCredentialImpl) credential;
            req = certFactory.createCertificateRequest(pkiCred.getCertificateChain()[0], keyPair);
        }
        // send the request to server
        out.write(req);
        out.flush();
        // read the number of certificates
        // int size = in.read();
        // if (logger.isDebugEnabled()) {
        //     logger.debug("Reading " + size + " certs");
        // }
        // X509Certificate [] chain = new X509Certificate[size];
        // ---------- CUSTOM PART START ----------
        ArrayList<X509Certificate> chain = new ArrayList<X509Certificate>(1);
        PEMReader pemReader = new PEMReader(new InputStreamReader(in), new PasswordFinder() {

            @Override
            public char[] getPassword() {
                return params.getPassphrase().toCharArray();
            }
        });
        Object obj;
        while ((obj = pemReader.readObject()) != null) {
            if (obj instanceof X509Certificate) {
                X509Certificate cert = (X509Certificate) obj;
                chain.add(cert);
            } else if (obj instanceof KeyPair) {
                keyPair = (KeyPair) obj;
            } else
                logger.debug("unhandled token: " + obj.getClass().getName());
        }
        // ---------- CUSTOM PART END ----------
        //
        //            for (int i=0;i<size;i++) {
        //                chain[i] = certFactory.loadCertificate(in);
        //                System.out.println("Received cert: " + chain[i].getSubjectDN());
        //                // DEBUG: display the cert names
        //                if (logger.isDebugEnabled()) {
        //                    logger.debug("Received cert: " + chain[i].getSubjectDN());
        //                }
        //            }
        //
        //            // get the response
        //            handleReply(in);
        //
        // make sure the private key belongs to the right public key
        // currently only works with RSA keys
        RSAPublicKey pkey = (RSAPublicKey) chain.get(0).getPublicKey();
        RSAPrivateKey prkey = (RSAPrivateKey) keyPair.getPrivate();
        if (!pkey.getModulus().equals(prkey.getModulus())) {
            throw new MyProxyException("Private/Public key mismatch!");
        }
        GlobusCredential newCredential = null;
        newCredential = new GlobusCredential(keyPair.getPrivate(), chain.toArray(new X509Certificate[chain.size()]));
        return new GlobusGSSCredentialImpl(newCredential, GSSCredential.INITIATE_AND_ACCEPT);
    } catch (Exception e) {
        throw new MyProxyException("MyProxy get failed.", e);
    } finally {
        // close socket
        close(out, in, gsiSocket);
    }
}
Example 13
Project: hudson_plugins-master  File: EC2PrivateKey.java View source code
/**
     * Obtains the fingerprint of the key in the "ab:cd:ef:...:12" format.
     */
public String getFingerprint() throws IOException {
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    Reader r = new BufferedReader(new StringReader(privateKey.toString()));
    PEMReader pem = new PEMReader(r);
    KeyPair pair = (KeyPair) pem.readObject();
    if (pair == null)
        return null;
    PrivateKey key = pair.getPrivate();
    return digest(key);
}
Example 14
Project: JTor-master  File: TorPrivateKey.java View source code
public static TorPrivateKey createFromPEMBuffer(String buffer) {
    final PEMReader pemReader = new PEMReader(new StringReader(buffer));
    final KeyPair kp = readPEMKeyPair(pemReader);
    if (kp.getPublic() instanceof RSAPublicKey && kp.getPrivate() instanceof RSAPrivateKey)
        return new TorPrivateKey((RSAPrivateKey) kp.getPrivate(), (RSAPublicKey) kp.getPublic());
    else
        throw new TorParsingException("Failed to extract PEM private key");
}
Example 15
Project: netling-master  File: PKCS8KeyFile.java View source code
protected KeyPair readKeyPair() throws IOException {
    KeyPair kp = null;
    org.bouncycastle.openssl.PasswordFinder pFinder = makeBouncyPasswordFinder();
    PEMReader r = null;
    Object o = null;
    try {
        for (; ; ) {
            // while the PasswordFinder tells us we should retry
            try {
                r = new PEMReader(new InputStreamReader(new FileInputStream(resource.getDetail())), pFinder);
                o = r.readObject();
            } catch (EncryptionException e) {
                if (pwdf.shouldRetry(resource))
                    continue;
                else
                    throw e;
            } finally {
                Util.closeQuietly(r);
            }
            break;
        }
    } finally {
        PasswordUtils.blankOut(passphrase);
    }
    if (o == null)
        throw new IOException("Could not read key pair from: " + resource);
    if (o instanceof KeyPair)
        kp = (KeyPair) o;
    else
        log.debug("Expected KeyPair, got {}", o);
    return kp;
}
Example 16
Project: oss-master  File: OSSSshAgentAddIdentity.java View source code
/**
   * @param args
   */
public static void main(String[] args) throws Exception {
    if (args.length < 3) {
        System.err.println("Usage: OSSLoadAgent OSS_URL SECRET_NAME WRAPPED_PASSPHRASE AGENT_AUTH_SOCK [KEY_FILE]");
        System.exit(1);
    }
    SSHAgentClient sshAgent = new SSHAgentClient(args[2]);
    // Get the secret from OSS
    // FIXME ? Provide a way to specify the ssh signing key fingerprint
    byte[] secret = OSSClient.getSecret(args[0], args[1], null);
    // Use the secret to unwrap the passphrase
    byte[] unwrap = CryptoHelper.unwrapBlob(secret, Hex.decode(args[3]));
    String password = new String(unwrap, "UTF-8");
    // Read private keys
    // openssh store it in PEM format		
    List<File> sshKeyFiles;
    if (args.length > 4) {
        sshKeyFiles = new ArrayList<File>(1);
        sshKeyFiles.add(new File(args[4]));
    } else {
        sshKeyFiles = getDefaultsKeyFiles();
    }
    for (File sshKeyFile : sshKeyFiles) {
        Reader fRd = new BufferedReader(new FileReader(sshKeyFile));
        PEMReader pem = new PEMReader(fRd, new DefaultPasswordFinder(password.toCharArray()), "BC");
        Object o;
        try {
            while ((o = pem.readObject()) != null) {
                if (o instanceof KeyPair) {
                    KeyPair kp = (KeyPair) o;
                    // Add the identity in the ssh-agent
                    byte[] keyblob = CryptoHelper.sshPrivateKeyBlobFromKeyPair(kp);
                    System.out.println("Loading " + sshKeyFile.getPath());
                    sshAgent.addIdentity(keyblob, sshKeyFile.getPath());
                }
            }
        } catch (EncryptionException ee) {
            System.err.println("Can't read private key in " + sshKeyFile.getAbsolutePath());
            ee.printStackTrace();
        }
        pem.close();
    }
    System.out.println("Keys in agent:");
    List<SSHKey> identities = sshAgent.requestIdentities();
    for (SSHKey identity : identities) {
        System.out.println(identity);
    }
}
Example 17
Project: qi4j-libraries-master  File: X509LightFactory.java View source code
public X509Light create(Reader pemReader) {
    try {
        return create((X509Certificate) new PEMReader(pemReader).readObject());
    } catch (ClassCastException ex) {
        throw new IllegalArgumentException("Given PEM Reader is not a valid X509Certificate PEM", ex);
    } catch (IOException ex) {
        throw new CryptoException("Unable to read X509Certificate from PEM", ex);
    }
}
Example 18
Project: scumd-master  File: FileKeyPairProvider.java View source code
protected KeyPair[] loadKeys() {
    if (!SecurityUtils.isBouncyCastleRegistered()) {
        throw new IllegalStateException("BouncyCastle must be registered as a JCE provider");
    }
    List<KeyPair> keys = new ArrayList<KeyPair>();
    for (int i = 0; i < files.length; i++) {
        try {
            PEMReader r = new PEMReader(new InputStreamReader(new FileInputStream(files[i])), passwordFinder);
            try {
                Object o = r.readObject();
                if (o instanceof KeyPair) {
                    keys.add((KeyPair) o);
                }
            } finally {
                r.close();
            }
        } catch (Exception e) {
            LOG.info("Unable to read key {}: {}", files[i], e);
        }
    }
    return keys.toArray(new KeyPair[keys.size()]);
}
Example 19
Project: incubator-brooklyn-master  File: SecureKeys.java View source code
/** reads RSA or DSA / pem style private key files (viz {@link #toPem(KeyPair)}), extracting also the public key if possible
     * @throws IllegalStateException on errors, in particular {@link PassphraseProblem} if that is the problem */
public static KeyPair readPem(InputStream input, final String passphrase) {
    // TODO cache is only for fallback "reader" strategy (2015-01); delete when Parser confirmed working
    byte[] cache = Streams.readFully(input);
    input = new ByteArrayInputStream(cache);
    try {
        PEMParser pemParser = new PEMParser(new InputStreamReader(input));
        Object object = pemParser.readObject();
        pemParser.close();
        JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
        KeyPair kp = null;
        if (object == null) {
            throw new IllegalStateException("PEM parsing failed: missing or invalid data");
        } else if (object instanceof PEMEncryptedKeyPair) {
            if (passphrase == null)
                throw new PassphraseProblem("passphrase required");
            try {
                PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(passphrase.toCharArray());
                kp = converter.getKeyPair(((PEMEncryptedKeyPair) object).decryptKeyPair(decProv));
            } catch (Exception e) {
                Exceptions.propagateIfFatal(e);
                throw new PassphraseProblem("wrong passphrase", e);
            }
        } else if (object instanceof PEMKeyPair) {
            kp = converter.getKeyPair((PEMKeyPair) object);
        } else if (object instanceof PrivateKeyInfo) {
            PrivateKey privKey = converter.getPrivateKey((PrivateKeyInfo) object);
            kp = new KeyPair(null, privKey);
        } else {
            throw new IllegalStateException("PEM parser support missing for: " + object);
        }
        return kp;
    } catch (Exception e) {
        Exceptions.propagateIfFatal(e);
        input = new ByteArrayInputStream(cache);
        try {
            Security.addProvider(new BouncyCastleProvider());
            @SuppressWarnings("deprecation") org.bouncycastle.openssl.PEMReader pr = new org.bouncycastle.openssl.PEMReader(new InputStreamReader(input), new PasswordFinder() {

                public char[] getPassword() {
                    return passphrase != null ? passphrase.toCharArray() : new char[0];
                }
            });
            @SuppressWarnings("deprecation") KeyPair result = (KeyPair) pr.readObject();
            pr.close();
            if (result == null)
                throw Exceptions.propagate(e);
            log.warn("PEMParser failed when deprecated PEMReader succeeded, with " + result + "; had: " + e);
            return result;
        } catch (Exception e2) {
            Exceptions.propagateIfFatal(e2);
            throw Exceptions.propagate(e);
        }
    }
}
Example 20
Project: android-15-master  File: Credentials.java View source code
/**
     * Convert objects from PEM format, which is used for
     * CA_CERTIFICATE, USER_CERTIFICATE, and USER_PRIVATE_KEY
     * entries.
     */
public static List<Object> convertFromPem(byte[] bytes) throws IOException {
    ByteArrayInputStream bai = new ByteArrayInputStream(bytes);
    Reader reader = new InputStreamReader(bai, Charsets.US_ASCII);
    PEMReader pr = new PEMReader(reader);
    List<Object> result = new ArrayList<Object>();
    Object o;
    while ((o = pr.readObject()) != null) {
        result.add(o);
    }
    pr.close();
    return result;
}
Example 21
Project: cryptoapplet-master  File: Clauer.java View source code
public PrivateKey getPrivateKey(String alias) throws Exception {
    HexEncoder hex = new HexEncoder();
    if (!_initialized || !_isAuth) {
        throw new Exception("UninitializedClauerOrUnauthenticated");
    }
    byte[] block = new byte[10240];
    int nblock = clRunTime.readFirstTypeBlock(this.TYPE_PEM_PRIVATE_KEY, block);
    // System.out.println("alias = " + alias);
    while (nblock != -1) {
        ByteArrayOutputStream bOs = new ByteArrayOutputStream();
        hex.encode(block, 8 + 4 + 1, 20, bOs);
        String id = bOs.toString();
        if (id.equals(alias)) {
            ByteArrayInputStream keyIs = new ByteArrayInputStream(block);
            DataInputStream dis = new DataInputStream(keyIs);
            /* Take out the header */
            dis.readInt();
            dis.readInt();
            dis.read();
            int tam = Integer.reverseBytes(dis.readInt());
            /* Take out irrelevant info */
            for (int i = 0; i < 20; i++) {
                dis.read();
            }
            /* Read certificate information */
            byte[] bkey = new byte[tam];
            dis.read(bkey, 0, tam);
            // KeyFactory rSAKeyFactory = KeyFactory.getInstance("RSA");
            // String bk= new String(bkey);
            // System.out.println("KEY: " + bk );
            Reader fRd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bkey)));
            _installBCprovider();
            PEMReader pemRd = new PEMReader(fRd, null);
            Object o;
            o = pemRd.readObject();
            if (o instanceof KeyPair) {
                KeyPair pair = (KeyPair) o;
                // System.out.println(pair.getPublic());
                PrivateKey p = pair.getPrivate();
                return p;
            }
        }
        nblock = clRunTime.readNextTypeBlock(this.TYPE_PEM_PRIVATE_KEY, block, nblock);
    }
    return null;
}
Example 22
Project: dasein-cloud-joyent-master  File: SignatureHttpAuth.java View source code
@Nullable
private KeyPair getKeyPair(String privateKeyContent, @Nullable final char[] password) throws IOException {
    InputStream is = new ByteArrayInputStream(privateKeyContent.getBytes());
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    PEMReader pemReader = null;
    if (password != null) {
        pemReader = new PEMReader(reader, new PasswordFinder() {

            @Override
            public char[] getPassword() {
                return password;
            }
        });
    } else {
        pemReader = new PEMReader(reader);
    }
    try {
        return (KeyPair) pemReader.readObject();
    } finally {
        reader.close();
        pemReader.close();
    }
}
Example 23
Project: fiware-sdc-master  File: RSASignerImpl.java View source code
/**
     * Get the private key
     * 
     * @param privateKey
     * @param keyPassword
     * @return
     * @throws IOException
     */
private static KeyPair readKeyPair(File privateKey, char[] keyPassword) throws IOException {
    FileReader fileReader = new FileReader(privateKey);
    PEMReader r = new PEMReader(fileReader, new DefaultPasswordFinder(keyPassword));
    try {
        return (KeyPair) r.readObject();
    } catch (IOException ex) {
        throw new IOException("The private key could not be decrypted", ex);
    } finally {
        r.close();
        fileReader.close();
    }
}
Example 24
Project: identityconnectors-master  File: BouncyCastlePEUtilities.java View source code
protected PrivateKey decodePrivateKey(String privateKeyString) {
    PEMReader reader = null;
    if (!_inited)
        init();
    try {
        reader = new PEMReader(new StringReader(privateKeyString));
        return ((KeyPair) reader.readObject()).getPrivate();
    } catch (IOException e) {
        throw ConnectorException.wrap(e);
    } finally {
        try {
            reader.close();
        } catch (Exception e) {
        }
    }
}
Example 25
Project: irma_future_id-master  File: ReaderTest.java View source code
public void performTest() throws Exception {
    PasswordFinder pGet = new Password("secret".toCharArray());
    PEMReader pemRd = openPEMResource("test.pem", pGet);
    Object o;
    KeyPair pair;
    while ((o = pemRd.readObject()) != null) {
        if (o instanceof KeyPair) {
        //pair = (KeyPair)o;
        //System.out.println(pair.getPublic());
        //System.out.println(pair.getPrivate());
        } else {
        //System.out.println(o.toString());
        }
    }
    // test bogus lines before begin are ignored.
    pemRd = openPEMResource("extratest.pem", pGet);
    while ((o = pemRd.readObject()) != null) {
        if (!(o instanceof X509Certificate)) {
            fail("wrong object found");
        }
    }
    //
    // pkcs 7 data
    //
    pemRd = openPEMResource("pkcs7.pem", null);
    ContentInfo d = (ContentInfo) pemRd.readObject();
    if (!d.getContentType().equals(CMSObjectIdentifiers.envelopedData)) {
        fail("failed envelopedData check");
    }
    //
    // ECKey
    //
    pemRd = openPEMResource("eckey.pem", null);
    ECNamedCurveParameterSpec spec = (ECNamedCurveParameterSpec) pemRd.readObject();
    pair = (KeyPair) pemRd.readObject();
    Signature sgr = Signature.getInstance("ECDSA", "BC");
    sgr.initSign(pair.getPrivate());
    byte[] message = new byte[] { (byte) 'a', (byte) 'b', (byte) 'c' };
    sgr.update(message);
    byte[] sigBytes = sgr.sign();
    sgr.initVerify(pair.getPublic());
    sgr.update(message);
    if (!sgr.verify(sigBytes)) {
        fail("EC verification failed");
    }
    if (!pair.getPublic().getAlgorithm().equals("ECDSA")) {
        fail("wrong algorithm name on public got: " + pair.getPublic().getAlgorithm());
    }
    if (!pair.getPrivate().getAlgorithm().equals("ECDSA")) {
        fail("wrong algorithm name on private");
    }
    //
    // writer/parser test
    //
    KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
    pair = kpGen.generateKeyPair();
    keyPairTest("RSA", pair);
    kpGen = KeyPairGenerator.getInstance("DSA", "BC");
    kpGen.initialize(512, new SecureRandom());
    pair = kpGen.generateKeyPair();
    keyPairTest("DSA", pair);
    //
    // PKCS7
    //
    ByteArrayOutputStream bOut = new ByteArrayOutputStream();
    PEMWriter pWrt = new PEMWriter(new OutputStreamWriter(bOut));
    pWrt.writeObject(d);
    pWrt.close();
    pemRd = new PEMReader(new InputStreamReader(new ByteArrayInputStream(bOut.toByteArray())));
    d = (ContentInfo) pemRd.readObject();
    if (!d.getContentType().equals(CMSObjectIdentifiers.envelopedData)) {
        fail("failed envelopedData recode check");
    }
    // OpenSSL test cases (as embedded resources)
    doOpenSslDsaTest("unencrypted");
    doOpenSslRsaTest("unencrypted");
    doOpenSslTests("aes128");
    doOpenSslTests("aes192");
    doOpenSslTests("aes256");
    doOpenSslTests("blowfish");
    doOpenSslTests("des1");
    doOpenSslTests("des2");
    doOpenSslTests("des3");
    doOpenSslTests("rc2_128");
    doOpenSslDsaTest("rc2_40_cbc");
    doOpenSslRsaTest("rc2_40_cbc");
    doOpenSslDsaTest("rc2_64_cbc");
    doOpenSslRsaTest("rc2_64_cbc");
    doDudPasswordTest("7fd98", 0, "corrupted stream - out of bounds length found");
    doDudPasswordTest("ef677", 1, "corrupted stream - out of bounds length found");
    doDudPasswordTest("800ce", 2, "unknown tag 26 encountered");
    doDudPasswordTest("b6cd8", 3, "DEF length 81 object truncated by 56");
    doDudPasswordTest("28ce09", 4, "DEF length 110 object truncated by 28");
    doDudPasswordTest("2ac3b9", 5, "DER length more than 4 bytes: 11");
    doDudPasswordTest("2cba96", 6, "DEF length 100 object truncated by 35");
    doDudPasswordTest("2e3354", 7, "DEF length 42 object truncated by 9");
    doDudPasswordTest("2f4142", 8, "DER length more than 4 bytes: 14");
    doDudPasswordTest("2fe9bb", 9, "DER length more than 4 bytes: 65");
    doDudPasswordTest("3ee7a8", 10, "DER length more than 4 bytes: 57");
    doDudPasswordTest("41af75", 11, "unknown tag 16 encountered");
    doDudPasswordTest("1704a5", 12, "corrupted stream detected");
    doDudPasswordTest("1c5822", 13, "unknown object in getInstance: org.bouncycastle.asn1.DERUTF8String");
    doDudPasswordTest("5a3d16", 14, "corrupted stream detected");
    doDudPasswordTest("8d0c97", 15, "corrupted stream detected");
    doDudPasswordTest("bc0daf", 16, "corrupted stream detected");
    doDudPasswordTest("aaf9c4d", 17, "corrupted stream - out of bounds length found");
    doNoPasswordTest();
    // encrypted private key test
    pGet = new Password("password".toCharArray());
    pemRd = openPEMResource("enckey.pem", pGet);
    RSAPrivateCrtKey privKey = (RSAPrivateCrtKey) pemRd.readObject();
    if (!privKey.getPublicExponent().equals(new BigInteger("10001", 16))) {
        fail("decryption of private key data check failed");
    }
    // general PKCS8 test
    pGet = new Password("password".toCharArray());
    pemRd = openPEMResource("pkcs8test.pem", pGet);
    while ((privKey = (RSAPrivateCrtKey) pemRd.readObject()) != null) {
        if (!privKey.getPublicExponent().equals(new BigInteger("10001", 16))) {
            fail("decryption of private key data check failed");
        }
    }
}
Example 26
Project: MSEC-master  File: Tools.java View source code
public static PrivateKey loadPrivKeyFromFile(String filename) {
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    try {
        FileReader fr = new FileReader(filename);
        PEMReader pr = new PEMReader(fr);
        KeyPair key = (KeyPair) (pr.readObject());
        pr.close();
        fr.close();
        return key.getPrivate();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
Example 27
Project: nimbus-master  File: SigningPolicy.java View source code
public static String getPolicyString(String caCertPath) throws Exception {
    final X509Certificate cert;
    final FileReader fr = new FileReader(caCertPath);
    try {
        Security.addProvider(new BouncyCastleProvider());
        final PEMReader reader = new PEMReader(fr, null, BouncyCastleProvider.PROVIDER_NAME);
        try {
            cert = (X509Certificate) reader.readObject();
        } finally {
            reader.close();
        }
    } finally {
        fr.close();
    }
    // access_id_CA
    final X500Principal subjectDN = cert.getSubjectX500Principal();
    final String DN = subjectDN.getName(X500Principal.RFC2253);
    final String access_id_CA = CertUtil.toGlobusID(DN, false);
    // cond_subjects
    final String signingtarget = EzPzCA.deriveSigningTargetString(cert);
    final String cond_subjectsRFC2253 = EzPzCA.getTargetDNfromSchema(signingtarget, "*");
    final String cond_subjects = CertUtil.toGlobusID(cond_subjectsRFC2253, true);
    final StringBuilder sb = new StringBuilder(PREFIX);
    sb.append("\n\n access_id_CA      X509         '");
    sb.append(access_id_CA);
    sb.append("'\n\n pos_rights        globus        CA:sign\n\n cond_subjects     globus       '\"");
    sb.append(cond_subjects);
    sb.append("\"'\n\n");
    sb.append(SUFFIX);
    return sb.toString();
}
Example 28
Project: openicf-master  File: BouncyCastlePEUtilities.java View source code
protected PrivateKey decodePrivateKey(String privateKeyString) {
    PEMReader reader = null;
    if (!_inited)
        init();
    try {
        reader = new PEMReader(new StringReader(privateKeyString));
        return ((KeyPair) reader.readObject()).getPrivate();
    } catch (IOException e) {
        throw ConnectorException.wrap(e);
    } finally {
        try {
            reader.close();
        } catch (Exception e) {
        }
    }
}
Example 29
Project: paymentgateway-master  File: CryptoServiceImpl.java View source code
private PrivateKey initializePrivateKey(File file) {
    try {
        PEMReader reader = null;
        try {
            Reader fileReader = new FileReader(file);
            reader = new PEMReader(fileReader);
            KeyPair keyPair = (KeyPair) reader.readObject();
            return keyPair.getPrivate();
        } catch (Exception e) {
            throw new IllegalArgumentException("Invalid private key: ", e);
        } finally {
            reader.close();
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
Example 30
Project: scm-ssh-plugin-master  File: ScmKeyPairProvider.java View source code
private KeyPair stringToKeyPair(String keyPairString) throws IOException {
    StringReader stringReader = new StringReader(keyPairString);
    PEMReader pemReader = new PEMReader(stringReader);
    Object obj = pemReader.readObject();
    if (obj instanceof KeyPair) {
        return (KeyPair) obj;
    } else {
        throw new IOException("Reader did not produce a key pair but an object of type " + obj.getClass().getName());
    }
}
Example 31
Project: XobotOS-master  File: Credentials.java View source code
/**
     * Convert objects from PEM format, which is used for
     * CA_CERTIFICATE, USER_CERTIFICATE, and USER_PRIVATE_KEY
     * entries.
     */
public static List<Object> convertFromPem(byte[] bytes) throws IOException {
    ByteArrayInputStream bai = new ByteArrayInputStream(bytes);
    Reader reader = new InputStreamReader(bai, Charsets.US_ASCII);
    PEMReader pr = new PEMReader(reader);
    List<Object> result = new ArrayList<Object>();
    Object o;
    while ((o = pr.readObject()) != null) {
        result.add(o);
    }
    pr.close();
    return result;
}
Example 32
Project: argus-pep-api-java-master  File: PEMFileReader.java View source code
/**
     * Reads the <b>first</b> available PEM encoded private key (PKCS1 and PKCS8
     * format) from an input stream.
     * 
     * @param is
     *            the input stream
     * @param password
     *            the password of the private key if encrypted, can be
     *            <code>null</code> if the key is not encrypted
     * @return the private key
     * @throws IOException
     *             if an error occurs while parsing the input stream
     */
protected PrivateKey readPrivateKey(InputStream is, String password) throws IOException {
    Reader inputStreamReader = new InputStreamReader(is);
    PEMReader reader = new PEMReader(inputStreamReader, new PEMPassword(password));
    KeyPair keyPair;
    Object object = null;
    do {
        object = reader.readObject();
        if (object == null) {
            String error = "No KeyPair or PrivateKey object found";
            log.error(error);
            throw new IOException(error);
        }
    } while (!(object instanceof KeyPair || object instanceof PrivateKey));
    log.debug("Object type: " + object.getClass().getCanonicalName());
    try {
        reader.close();
    } catch (Exception e) {
    }
    if (object instanceof KeyPair) {
        keyPair = (KeyPair) object;
        return keyPair.getPrivate();
    } else if (object instanceof PrivateKey) {
        return (PrivateKey) object;
    } else {
        String error = "Unknown object type: " + object.getClass().getName();
        log.error(error);
        throw new IOException(error);
    }
}
Example 33
Project: as2-master  File: KeyStoreUtil.java View source code
/**Reads a certificate from a stream and returns it
     */
public X509Certificate readCertificate(InputStream certStream, Provider provider) throws CertificateException {
    CertificateFactory factory;
    X509Certificate cert = null;
    try {
        if (provider != null) {
            factory = CertificateFactory.getInstance("X.509", provider);
            cert = (X509Certificate) factory.generateCertificate(certStream);
        }
        //Let the default provider parsing the certificate
        if (provider == null || cert == null) {
            factory = CertificateFactory.getInstance("X.509");
            cert = (X509Certificate) factory.generateCertificate(certStream);
        }
        //still no success, perhaps PEM encoding? Start the PEM reader and see if it could read the cert
        if (cert == null) {
            PEMReader pemReader = new PEMReader(new InputStreamReader(certStream));
            cert = (X509Certificate) pemReader.readObject();
        }
    } catch (Exception e) {
        throw new CertificateException("Not a certificate or unsupported encoding.");
    }
    if (cert != null) {
        return (cert);
    } else {
        throw new CertificateException("Not a certificate or unsupported encoding.");
    }
}
Example 34
Project: Commons-SSH-master  File: KeyUtils.java View source code
public static KeyPair getPrivateKeyFromStream(InputStream stream, final String passphrase) throws IOException {
    PEMReader reader;
    if (passphrase == null)
        reader = new PEMReader(new InputStreamReader(stream));
    else
        reader = new PEMReader(new InputStreamReader(stream), new PasswordFinder() {

            @Override
            public char[] getPassword() {
                return passphrase.toCharArray();
            }
        });
    return (KeyPair) reader.readObject();
}
Example 35
Project: ebics-java-master  File: KeyStoreManager.java View source code
/**
   * Reads a certificate from an input stream for a given provider
   * @param input the input stream
   * @param provider the certificate provider
   * @return the certificate
   * @throws CertificateException
   * @throws IOException
   */
public X509Certificate read(InputStream input, Provider provider) throws CertificateException, IOException {
    X509Certificate certificate;
    certificate = (X509Certificate) CertificateFactory.getInstance("X.509", provider).generateCertificate(input);
    if (certificate == null) {
        certificate = (X509Certificate) (new PEMReader(new InputStreamReader(input))).readObject();
    }
    return certificate;
}
Example 36
Project: ebics-master  File: KeyStoreManager.java View source code
/**
   * Reads a certificate from an input stream for a given provider
   * @param input the input stream
   * @param provider the certificate provider
   * @return the certificate
   * @throws CertificateException
   * @throws IOException
   */
public X509Certificate read(InputStream input, Provider provider) throws CertificateException, IOException {
    X509Certificate certificate;
    certificate = (X509Certificate) CertificateFactory.getInstance("X.509", provider).generateCertificate(input);
    if (certificate == null) {
        certificate = (X509Certificate) (new PEMReader(new InputStreamReader(input))).readObject();
    }
    return certificate;
}
Example 37
Project: frameworks_base_disabled-master  File: Credentials.java View source code
/**
     * Convert objects from PEM format, which is used for
     * CA_CERTIFICATE, USER_CERTIFICATE, and USER_PRIVATE_KEY
     * entries.
     */
public static List<Object> convertFromPem(byte[] bytes) throws IOException {
    ByteArrayInputStream bai = new ByteArrayInputStream(bytes);
    Reader reader = new InputStreamReader(bai, Charsets.US_ASCII);
    PEMReader pr = new PEMReader(reader);
    List<Object> result = new ArrayList<Object>();
    Object o;
    while ((o = pr.readObject()) != null) {
        result.add(o);
    }
    pr.close();
    return result;
}
Example 38
Project: jOCCI-api-master  File: HTTPAuthentication.java View source code
private KeyStore loadCAsFromPath() throws AuthenticationException {
    try {
        File CADir = new File(CAPath);
        if (!CADir.isDirectory()) {
            throw new AuthenticationException("'" + CAPath + "' is not a directory.");
        }
        FilenameFilter fileNameFilter = new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
                if (name.lastIndexOf('.') > 0) {
                    int lastIndex = name.lastIndexOf('.');
                    String str = name.substring(lastIndex);
                    if (str.equals(".pem")) {
                        return true;
                    }
                }
                return false;
            }
        };
        File[] certs = CADir.listFiles(fileNameFilter);
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(null);
        List<Certificate> rootCertificates = new ArrayList<>();
        PEMReader reader;
        for (File cert : certs) {
            reader = new PEMReader(new InputStreamReader(new FileInputStream(cert)));
            rootCertificates.add((X509Certificate) reader.readObject());
        }
        for (Certificate cert : rootCertificates) {
            X509Certificate x509Cert = (X509Certificate) cert;
            ks.setCertificateEntry(x509Cert.getSubjectX500Principal().getName(), x509Cert);
            LOGGER.debug("adding certificate: " + x509Cert.getSubjectX500Principal().getName());
        }
        return ks;
    } catch (KeyStoreExceptionIOException | NoSuchAlgorithmException | CertificateException |  ex) {
        throw new AuthenticationException(ex);
    }
}
Example 39
Project: jradius-master  File: KeyStoreUtil.java View source code
public static KeyManager[] loadKeyManager(String type, InputStream in, String password) throws Exception {
    loadBC();
    final char[] pwd = (password == null || password.length() == 0) ? null : password.toCharArray();
    if (type.equalsIgnoreCase("pem")) {
        PEMReader pemReader = new PEMReader(new InputStreamReader(in), new PasswordFinder() {

            public char[] getPassword() {
                return pwd;
            }
        });
        Object obj, keyObj = null, certObj = null, keyPair = null;
        while ((obj = pemReader.readObject()) != null) {
            if (obj instanceof X509Certificate)
                certObj = obj;
            else if (obj instanceof PrivateKey)
                keyObj = obj;
            else if (obj instanceof KeyPair)
                keyPair = obj;
        }
        if ((keyObj != null || keyPair != null) && certObj != null) {
            final PrivateKey key = keyPair != null ? ((KeyPair) keyPair).getPrivate() : (PrivateKey) keyObj;
            final X509Certificate cert = (X509Certificate) certObj;
            KeyStore ksKeys = KeyStore.getInstance("JKS");
            ksKeys.load(null, pwd == null ? "".toCharArray() : pwd);
            ksKeys.setCertificateEntry("", cert);
            ksKeys.setKeyEntry("", key, pwd == null ? "".toCharArray() : pwd, new Certificate[] { cert });
            KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            kmf.init(ksKeys, pwd == null ? "".toCharArray() : pwd);
            return kmf.getKeyManagers();
        /*
				return new KeyManager[] { new X509KeyManager()
			    {
					public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) {
						return "a";
					}

					public String chooseServerAlias(String keyType, Principal[] issuers, Socket socket) {
						return "a";
					}

					public X509Certificate[] getCertificateChain(String alias) {
						return new X509Certificate[] { cert };
					}

					public String[] getClientAliases(String keyType, Principal[] issuers) {
						return new String[] {"a"};
					}

					public PrivateKey getPrivateKey(String alias) {
						return key;
					}

					public String[] getServerAliases(String keyType, Principal[] issuers) {
						return new String[] {"a"};
					}
			    }};
    */
        } else {
            throw new RuntimeException("Could not load PEM source");
        }
    }
    KeyStore ksKeys = KeyStore.getInstance(type);
    ksKeys.load(in, pwd);
    Enumeration<String> aliases = ksKeys.aliases();
    while (aliases.hasMoreElements()) {
        String alias = (String) aliases.nextElement();
        System.err.println("KeyStore Alias: " + alias);
    }
    KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    kmf.init(ksKeys, pwd);
    return kmf.getKeyManagers();
}
Example 40
Project: Signal-Server-master  File: FederatedClient.java View source code
private KeyStore initializeTrustStore(String name, String pemCertificate) throws CertificateException {
    try {
        PEMReader reader = new PEMReader(new InputStreamReader(new ByteArrayInputStream(pemCertificate.getBytes())));
        X509Certificate certificate = (X509Certificate) reader.readObject();
        if (certificate == null) {
            throw new CertificateException("No certificate found in parsing!");
        }
        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
        keyStore.load(null);
        keyStore.setCertificateEntry(name, certificate);
        return keyStore;
    } catch (IOExceptionKeyStoreException |  e) {
        throw new CertificateException(e);
    } catch (NoSuchAlgorithmException e) {
        throw new AssertionError(e);
    }
}
Example 41
Project: org.glite.slcs.common-master  File: Codec.java View source code
/**
     * Return an array of all X509Certificates stored in a PEM encoded source.
     * The certificate order of the source is respected.
     * 
     * @param reader
     *            The Reader used to read the source.
     * @return The array of all X509 certificates found in the PEM source.
     * @throws IOException
     *             If an error occurs while reading the source.
     */
public static X509Certificate[] readPEMEncodedCertificates(Reader reader) throws IOException {
    Vector<X509Certificate> certificates = new Vector<X509Certificate>();
    LOG.debug("read all certificates");
    PEMReader pr = new PEMReader(reader);
    boolean haveNext = true;
    while (haveNext) {
        X509Certificate certificate = (X509Certificate) pr.readObject();
        if (certificate == null) {
            // stop loop
            haveNext = false;
        } else {
            certificates.add(certificate);
        }
    }
    int length = certificates.size();
    LOG.debug(length + " certificates found");
    X509Certificate certificatesArray[] = (X509Certificate[]) certificates.toArray(new X509Certificate[length]);
    return certificatesArray;
}
Example 42
Project: primecloud-controller-master  File: IaasDescribeServiceImpl.java View source code
protected PrivateKey toPrivateKey(String privateKey) {
    StringReader reader = new StringReader(privateKey);
    // プライベートキーを読�込�
    PEMReader pemReader = new PEMReader(reader);
    try {
        Object pemObject = pemReader.readObject();
        KeyPair keyPair = KeyPair.class.cast(pemObject);
        return keyPair.getPrivate();
    } catch (Exception e) {
        throw new AutoApplicationException("ESERVICE-000705", e);
    } finally {
        try {
            pemReader.close();
        } catch (IOException ignore) {
        }
    }
}
Example 43
Project: TextSecure-Server-master  File: FederatedClient.java View source code
private KeyStore initializeTrustStore(String name, String pemCertificate) throws CertificateException {
    try {
        PEMReader reader = new PEMReader(new InputStreamReader(new ByteArrayInputStream(pemCertificate.getBytes())));
        X509Certificate certificate = (X509Certificate) reader.readObject();
        if (certificate == null) {
            throw new CertificateException("No certificate found in parsing!");
        }
        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
        keyStore.load(null);
        keyStore.setCertificateEntry(name, certificate);
        return keyStore;
    } catch (IOExceptionKeyStoreException |  e) {
        throw new CertificateException(e);
    } catch (NoSuchAlgorithmException e) {
        throw new AssertionError(e);
    }
}
Example 44
Project: milton-master  File: SSLTools.java View source code
/**
	 *
	 * @param privateKeyBytes
	 * @param password
	 * @return
	 * @throws java.security.GeneralSecurityException
	 * @throws java.io.IOException
	 */
public static PrivateKey parsePrivateKey(final byte[] privateKeyBytes, final char[] password) throws GeneralSecurityException, IOException {
    ByteArrayInputStream bais = new ByteArrayInputStream(privateKeyBytes);
    InputStreamReader reader = new InputStreamReader(bais);
    PEMReader parser = null;
    try {
        if (password != null) {
            parser = new PEMReader(reader, getPasswordFinder(password));
        } else {
            parser = new PEMReader(reader);
        }
        KeyPair caKeyPair = (KeyPair) parser.readObject();
        if (caKeyPair == null) {
            throw new GeneralSecurityException("Reading CA private key failed");
        }
        return caKeyPair.getPrivate();
    } finally {
        if (parser != null) {
            parser.close();
        }
        bais.close();
        reader.close();
    }
}
Example 45
Project: milton2-master  File: SSLTools.java View source code
/**
	 *
	 * @param privateKeyBytes
	 * @param password
	 * @return
	 * @throws java.security.GeneralSecurityException
	 * @throws java.io.IOException
	 */
public static PrivateKey parsePrivateKey(final byte[] privateKeyBytes, final char[] password) throws GeneralSecurityException, IOException {
    ByteArrayInputStream bais = new ByteArrayInputStream(privateKeyBytes);
    InputStreamReader reader = new InputStreamReader(bais);
    PEMReader parser = null;
    try {
        if (password != null) {
            parser = new PEMReader(reader, getPasswordFinder(password));
        } else {
            parser = new PEMReader(reader);
        }
        KeyPair caKeyPair = (KeyPair) parser.readObject();
        if (caKeyPair == null) {
            throw new GeneralSecurityException("Reading CA private key failed");
        }
        return caKeyPair.getPrivate();
    } finally {
        if (parser != null) {
            parser.close();
        }
        bais.close();
        reader.close();
    }
}
Example 46
Project: obiba-commons-master  File: KeyStoreManager.java View source code
protected KeyPair getKeyPair(InputStream privateKey) {
    try (PEMReader pemReader = getPEMReader(privateKey)) {
        Object object = getPemObject(pemReader);
        if (object instanceof KeyPair) {
            return (KeyPair) object;
        }
        throw new RuntimeException("Unexpected type [" + object + "]. Expected KeyPair.");
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
Example 47
Project: RPlay-master  File: RTSPResponder.java View source code
/**
	 * Crypts with private key
	 * @param array	data to encrypt
	 * @return encrypted data
	 */
public byte[] encryptRSA(byte[] array) {
    try {
        Security.addProvider(new BouncyCastleProvider());
        PEMReader pemReader = new PEMReader(new StringReader(key));
        KeyPair pObj = (KeyPair) pemReader.readObject();
        // Encrypt
        Cipher cipher = Cipher.getInstance("RSA/NONE/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, pObj.getPrivate());
        return cipher.doFinal(array);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
Example 48
Project: TorProxy-master  File: Encryption.java View source code
/**
     * makes RSA public key from string
     * 
     * @param s
     *            string that contais the key
     * @return
     * @see JCERSAPublicKey
     */
public static RSAPublicKeyStructure extractRSAKey(String s) {
    PEMReader reader = new PEMReader(new StringReader(s));
    JCERSAPublicKey JCEKey;
    RSAPublicKeyStructure theKey;
    try {
        Object o = reader.readObject();
        if (!(o instanceof JCERSAPublicKey))
            throw new IOException("Common.extractRSAKey: no public key found for signing key in string '" + s + "' type " + o.getClass().getName());
        JCEKey = (JCERSAPublicKey) o;
        theKey = new RSAPublicKeyStructure(JCEKey.getModulus(), JCEKey.getPublicExponent());
    } catch (IOException e) {
        Logger.logDirectory(Logger.WARNING, "Common.extractRSAKey: Caught exception:" + e.getMessage());
        theKey = null;
    }
    return theKey;
}
Example 49
Project: argus-pap-master  File: ServiceCLI.java View source code
public int execute(String[] args) throws ParseException, HelpMessageException, RemoteException {
    CommandLine commandLine = parser.parse(options, args);
    if (commandLine.hasOption(OPT_HELP)) {
        throw new HelpMessageException();
    }
    if (commandLine.hasOption(OPT_VERBOSE)) {
        verboseMode = true;
    }
    if (commandLine.hasOption(OPT_URL_LONG)) {
        serviceClient.setTargetEndpoint(commandLine.getOptionValue(OPT_URL_LONG));
    } else {
        String host = Pap.DEFAULT_HOST;
        String papHostProperty = System.getProperty(PAP_HOST_PROPERTY);
        if (papHostProperty != null && !"".equals(papHostProperty.trim())) {
            host = papHostProperty;
        }
        String port = Pap.DEFAULT_PORT;
        String papPortProperty = System.getProperty(PAP_PORT_PROPERTY);
        if (papPortProperty != null && !"".equals(papPortProperty.trim())) {
            port = papPortProperty;
        }
        if (commandLine.hasOption(OPT_HOST_LONG)) {
            host = commandLine.getOptionValue(OPT_HOST_LONG);
        }
        if (commandLine.hasOption(OPT_PORT)) {
            port = commandLine.getOptionValue(OPT_PORT);
        }
        try {
            Integer.valueOf(port);
        } catch (NumberFormatException e) {
            throw new ParseException(String.format("Invalid port number \"%s\" (option -%s, --%s)", port, OPT_PORT, OPT_PORT_LONG));
        }
        serviceClient.setTargetEndpoint(String.format(DEFAULT_SERVICE_URL, host, port, Pap.DEFAULT_SERVICES_ROOT_PATH));
    }
    boolean credentialsNotRetrieved = true;
    if (commandLine.hasOption(OPT_PROXY_LONG)) {
        serviceClient.setClientProxy(commandLine.getOptionValue(OPT_PROXY_LONG));
        credentialsNotRetrieved = false;
    }
    if (commandLine.hasOption(OPT_CERT_LONG)) {
        if (commandLine.hasOption(OPT_PROXY_LONG)) {
            throw new ParseException(String.format("Conflicting options --%s and --%s.", OPT_PROXY_LONG, OPT_CERT_LONG));
        } else {
            if (!commandLine.hasOption(OPT_KEY_LONG)) {
                throw new ParseException(String.format("Option --%s requires also option --%s.", OPT_CERT_LONG, OPT_KEY_LONG));
            }
            serviceClient.setClientCertificate(commandLine.getOptionValue(OPT_CERT_LONG));
            credentialsNotRetrieved = false;
        }
    }
    if (commandLine.hasOption(OPT_KEY_LONG)) {
        if (commandLine.hasOption(OPT_PROXY_LONG)) {
            throw new ParseException(String.format("Conflicting options --%s and --%s.", OPT_PROXY_LONG, OPT_KEY_LONG));
        } else {
            if (!commandLine.hasOption(OPT_CERT_LONG)) {
                throw new ParseException(String.format("Option --%s requires also option --%s.", OPT_KEY_LONG, OPT_CERT_LONG));
            }
            serviceClient.setClientPrivateKey(commandLine.getOptionValue(OPT_KEY_LONG));
            credentialsNotRetrieved = false;
        }
    }
    if (credentialsNotRetrieved) {
        // 1. if running as root take the cert /etc/grid-security/hostcert.pem
        // 2. check the env variable X509_USER_PROXY
        // 3. check the env variable X509_USER_CERT (and X509_USER_KEY)
        // 4. check the proxy /tmp/x509up_u<id_utente>
        // 5. check the cert $HOME/.globus/usercert.pem and key $HOME/.globus/userkey.pem
        String euid = getEUID();
        if (euid == null) {
            log.error("Cannot enstabilish user's effective user id.");
            throw new PAPException(String.format("Cannot enstabilish user's effective user id, please use the --%s or --%s, --%s options.", OPT_PROXY_LONG, OPT_CERT_LONG, OPT_KEY_LONG));
        }
        String messageString = null;
        if ("0".equals(euid)) {
            if (setCertFromEnvironment()) {
                messageString = String.format("Connecting to %s using %s and %s (from environment X509_USER_CERT and X509_USER_KEY)", serviceClient.getTargetEndpoint(), serviceClient.getClientCertificate(), serviceClient.getClientPrivateKey());
            } else {
                serviceClient.setClientCertificate("/etc/grid-security/hostcert.pem");
                serviceClient.setClientPrivateKey("/etc/grid-security/hostkey.pem");
                messageString = String.format("Connecting to %s using %s and %s", serviceClient.getTargetEndpoint(), serviceClient.getClientCertificate(), serviceClient.getClientPrivateKey());
            }
        } else {
            if (setProxyFromEnvironment()) {
                messageString = String.format("Connecting to %s using proxy (from environment X509_USER_PROXY)  %s", serviceClient.getTargetEndpoint(), serviceClient.getClientProxy());
            } else if (setCertFromEnvironment()) {
                messageString = String.format("Connecting to %s using %s and %s (from environment X509_USER_CERT and X509_USER_KEY)", serviceClient.getTargetEndpoint(), serviceClient.getClientCertificate(), serviceClient.getClientPrivateKey());
            } else if (setProxyFromStandardLocation(euid)) {
                messageString = String.format("Connecting to %s using proxy %s", serviceClient.getTargetEndpoint(), serviceClient.getClientProxy());
            } else if (setCertFromHomeDir()) {
                messageString = String.format("Connecting to %s using %s and %s", serviceClient.getTargetEndpoint(), serviceClient.getClientCertificate(), serviceClient.getClientPrivateKey());
            } else {
                throw new ParseException(String.format("Unable to find a certificate or a proxy, please specify a proxy file with option --%s or certificate and key with options --%s and --%s", OPT_PROXY_LONG, OPT_CERT_LONG, OPT_KEY_LONG));
            }
        }
        log.info(messageString);
        if (verboseMode) {
            System.out.println(messageString);
        }
    }
    // is a host certificate key which doesn't need the password
    if (serviceClient.getClientPrivateKey() != null) {
        try {
            Reader reader = new FileReader(serviceClient.getClientPrivateKey());
            String prompt = "Please enter the passphrase for the private key file " + serviceClient.getClientPrivateKey() + ": ";
            PasswordFinderImpl passwordFinder = new PasswordFinderImpl(prompt);
            PEMReader pm = new PEMReader(reader, passwordFinder);
            char[] password = null;
            try {
                pm.readObject();
            } catch (IOException e) {
            }
            password = passwordFinder.getTypedPassword();
            if (password != null) {
                serviceClient.setClientPrivateKeyPassword(new String(password));
            }
        } catch (FileNotFoundException e) {
            throw new CLIException(e);
        }
    }
    return executeCommandService(commandLine, serviceClient);
}
Example 50
Project: CounterSign-master  File: RepositoryManagedSignatureProvider.java View source code
/**
	 * Get the user's public key
	 * 
	 */
public PublicKey getPublicKey() {
    NodeRef person = serviceRegistry.getPersonService().getPerson(user);
    NodeRef keyNode = counterSignService.getSignatureArtifact(person, CounterSignSignatureModel.ASSOC_SIGNERPUBLICKEY);
    if (keyNode != null) {
        PEMReader parser = null;
        try {
            ContentReader keyReader = serviceRegistry.getContentService().getReader(keyNode, ContentModel.PROP_CONTENT);
            parser = new PEMReader(new InputStreamReader(keyReader.getContentInputStream()));
            PublicKey key = (PublicKey) parser.readObject();
            parser.close();
            return key;
        } catch (Exception ioex) {
            logger.warn("Error reading user public key: " + ioex.getLocalizedMessage());
        } finally {
            try {
                if (parser != null)
                    parser.close();
            } catch (IOException ioex) {
                logger.warn("Error closing PEMReader");
            }
        }
    }
    return null;
}
Example 51
Project: OpenIDM-master  File: SecurityResourceProvider.java View source code
/**
     * Reads a certificate from a supplied string representation, and a supplied type.
     * 
     * @param certString A String representation of a certificate
     * @param type The type of certificate ("X509").
     * @return The certificate
     * @throws Exception
     */
protected Certificate readCertificate(String certString, String type) throws Exception {
    StringReader sr = new StringReader(certString);
    PEMReader pw = new PEMReader(sr);
    Object object = pw.readObject();
    if (object instanceof X509Certificate) {
        return (X509Certificate) object;
    } else {
        throw ResourceException.getException(ResourceException.BAD_REQUEST, "Unsupported certificate format");
    }
}
Example 52
Project: guanxi-common-master  File: TrustUtils.java View source code
/**
   * Converts a PEM to an X509Certificate. Requires the Bouncy Castle provider
   * to be installed.
   *
   * @param pemURL URL of the PEM file
   * @return X509Certificate
   * @throws GuanxiException if an error occurs
   */
public static X509Certificate pem2x509(String pemURL) throws GuanxiException {
    try {
        URL pem = new URL(pemURL);
        PEMReader pemReader = new PEMReader(new InputStreamReader(pem.openStream()));
        return (X509Certificate) pemReader.readObject();
    } catch (MalformedURLException mue) {
        throw new GuanxiException(mue);
    } catch (IOException ioe) {
        throw new GuanxiException(ioe);
    }
}
Example 53
Project: cloud-master  File: KeyPairs.java View source code
public static KeyPair fromPem(String keyData) throws IOException {
    PEMReader r = new PEMReader(new StringReader(keyData), null, BouncyCastleLoader.getName());
    try {
        return (KeyPair) r.readObject();
    } finally {
        IoUtils.safeClose(r);
    }
}
Example 54
Project: xmlsh-master  File: S3Client.java View source code
private Object readPEM(InputPort in, SerializeOpts sopts) throws CoreException, IOException {
    try (PEMReader reader = new PEMReader(in.asReader(sopts))) {
        Object obj = reader.readObject();
        return obj;
    }
}
Example 55
Project: cagrid2-master  File: KeyUtil.java View source code
public static PublicKey loadPublicKey(String provider, String key) throws IOException, GeneralSecurityException {
    StringReader in = new StringReader(key);
    PEMReader reader = new PEMReader(in, null, provider);
    PublicKey pk = (PublicKey) reader.readObject();
    reader.close();
    return pk;
}
Example 56
Project: xmlsh1_3-master  File: AWSS3Command.java View source code
private Object readPEM(XValue sPrivate) throws IOException, UnsupportedEncodingException, CoreException {
    PEMReader reader = new PEMReader(getInput(sPrivate).asReader(this.getSerializeOpts()));
    Object obj = reader.readObject();
    reader.close();
    return obj;
}
Example 57
Project: gridcake-master  File: CREAMService.java View source code
/**
     * Does a getProxy operation in a CREAM service.
     * @param delegationId The delegation ID.
     * @return A CSR returned by the CREAM service.
     * @throws Exception If something fails.
     */
private PKCS10CertificationRequest doGetProxyRequest(String delegationId) throws Exception {
    String csrAsString = delegationService.getProxyReq(delegationId);
    Reader csrReader = new StringReader(csrAsString);
    PEMReader r = new PEMReader(csrReader);
    PKCS10CertificationRequest csr = (PKCS10CertificationRequest) r.readObject();
    return csr;
}