package io.urmia.auth.joyent; import javax.security.cert.CertificateException; import javax.security.cert.X509Certificate; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.security.*; import org.bouncycastle.openssl.PEMParser; public class BcPEMReader { public static void main(String[] args) throws CertificateException, IOException, NoSuchProviderException, NoSuchAlgorithmException, InvalidKeyException, SignatureException { // Reader streamReader = new InputStreamReader(BcPEMReader.class.getResourceAsStream("rsa_private.pem")); Reader rsaPrivate = new FileReader("src/test/resources/rsa_private.pem"); Reader rsaPublic = new FileReader("src/test/resources/rsa_public.pem"); // PEMParser reader = new PEMParser(streamReader); PEMParser privatePem = new PEMParser(rsaPrivate); PEMParser publicPem = new PEMParser(rsaPrivate); PublicKey publicKey; Object pubObject = publicPem.readObject(); if (pubObject instanceof PublicKey) { publicKey = (PublicKey)pubObject; } else { System.out.println("pubObject = " + pubObject); return; } Object pemObject = privatePem.readObject(); if (pemObject instanceof X509Certificate) { X509Certificate cert = (X509Certificate)pemObject; cert.checkValidity(); // to check it's valid in time cert.verify(publicKey); // verify the sig. using the issuer's public key } } }