¿Cómo puedo leer un archivo PEM de clave privada BouncyCastle usando JCA? [duplicar

Esta pregunta ya tiene una respuesta aquí:

convierta la clave rsa de openSSH a javax.crypto.Cipher formato compatible 1 respuesta

En una de nuestras aplicaciones, las claves privadas se almacenan utilizando PEMWriter de BouncyCastle. En este momento estoy investigando si podemos deshacernos de la dependencia de BouncyCastle ya que Java 7 parece tener todo lo que necesitamos. El único problema es que no puedo leer las claves privadas almacenadas en la base de datos como cadenas codificadas por PEM (los certificados / claves públicas están bien).

Si guardo la cadena codificada por PEM de la clave privada de la base de datos en un archivo, puedo ejecutar OpenSSL para convertir la clave al formato PKCS # 8 de esta manera:

openssl pkcs8 -topk8 -inform PEM -outform DER \
              -in private_key.pem -out private_key.der -nocrypt

La salida resultante puedo codificar en base64 y luego leer usando este bit de código Java / JCA:

byte[] privateKeyBytes = 
           DatatypeConverter.parseBase64Binary(privateKeyDERcontents);
PrivateKey prKey = 
           KeyFactory.getInstance("RSA").
               generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes));

Esta clave privada coincide con la clave pública almacenada como se esperaba, es decir, puedo hacer un viaje de ida y vuelta de texto sin formato a texto cifrado y viceversa.

La pregunta que tengo es: ¿puedo leer directamente la codificación PEM original de alguna manera?

EDITA

Aquí hay un poco de código que lee las cadenas en cuestión usando BouncyCastle:

if (Security.getProvider("BC") == null) {
    Security.addProvider(new BouncyCastleProvider());
}
PEMReader pemReader = new PEMReader(new StringReader(privateKeyPEM));
KeyPair keyPair = (KeyPair) pemReader.readObject();
PrivateKey key = keyPair.getPrivate();

El "privateKeyPEM" es la cadena codificada por PEM en la base de datos; de lo contrario, este ejemplo es autónomo. Curiosamente, ya usa el objeto JCA KeyPair como salida. Para reformular mi pregunta original: ¿puedo hacer el equivalente del código anterior sin depender de PEMReader (y a su vez algunas otras clases de BouncyCastle)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta