Bouncy Castle Cryptography Library 1.85

org.bouncycastle.openssl.jcajce
Class JcaPrivateKeyReader

java.lang.Object
  extended byorg.bouncycastle.openssl.jcajce.JcaPrivateKeyReader

public class JcaPrivateKeyReader
extends java.lang.Object

Reads a private key in any of the common OpenSSL on-disk forms and converts it to a JCA PrivateKey, transparently decrypting the password-protected variants.

The following encodings are recognised, on the PEM side by the type PEMParser hands back and on the DER side by the structure of the outermost SEQUENCE: traditional (PKCS#1) RSA keys - and their DER body; PKCS#8 PrivateKeyInfo - and DER; password-protected traditional keys ( with a header), decrypted with the supplied password; encrypted PKCS#8 ( and DER ), decrypted with the supplied password.

This is the JCA-aware read-side companion to JcaPKIXIdentityBuilder and lives in the package because it produces a PrivateKey. It is a convenience over PEMParser / JcaPEMKeyConverter only - the standards-compliant writers (JcaPKCS8Generator, JcePEMEncryptorBuilder, JceOpenSSLPKCS8EncryptorBuilder) remain the way to emit keys.


Constructor Summary
JcaPrivateKeyReader()
          Base constructor for reading unencrypted keys.
JcaPrivateKeyReader(char[] password)
          Construct a reader carrying the password used to decrypt password-protected keys.
 
Method Summary
 java.security.PrivateKey readKey(byte[] encoding)
          Read a private key from a buffer of PEM or DER bytes, auto-detecting the encoding.
 java.security.PrivateKey readKey(java.io.File keyFile)
          Read a private key from a PEM or DER file, auto-detecting the encoding.
 java.security.PrivateKey readKey(java.io.InputStream keyStream)
          Read a private key from a stream of PEM or DER bytes, auto-detecting the encoding.
 java.security.PrivateKey readKey(java.io.Reader reader)
          Read a private key from a PEM reader.
 JcaPrivateKeyReader setProvider(java.security.Provider provider)
           
 JcaPrivateKeyReader setProvider(java.lang.String providerName)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JcaPrivateKeyReader

public JcaPrivateKeyReader()
Base constructor for reading unencrypted keys. Supplying an encrypted key to a reader built this way results in a PEMException.


JcaPrivateKeyReader

public JcaPrivateKeyReader(char[] password)
Construct a reader carrying the password used to decrypt password-protected keys. The password is ignored when the key turns out to be unencrypted.

Parameters:
password - the password to decrypt with, or null if no encrypted key is expected.
Method Detail

setProvider

public JcaPrivateKeyReader setProvider(java.security.Provider provider)

setProvider

public JcaPrivateKeyReader setProvider(java.lang.String providerName)

readKey

public java.security.PrivateKey readKey(java.io.File keyFile)
                                 throws java.io.IOException
Read a private key from a PEM or DER file, auto-detecting the encoding.

Parameters:
keyFile - the file containing the key.
Returns:
the recovered private key.
Throws:
java.io.IOException - on a read, parse, or decryption failure.

readKey

public java.security.PrivateKey readKey(java.io.InputStream keyStream)
                                 throws java.io.IOException
Read a private key from a stream of PEM or DER bytes, auto-detecting the encoding. The stream is fully drained but not closed.

Parameters:
keyStream - the stream containing the key.
Returns:
the recovered private key.
Throws:
java.io.IOException - on a read, parse, or decryption failure.

readKey

public java.security.PrivateKey readKey(byte[] encoding)
                                 throws java.io.IOException
Read a private key from a buffer of PEM or DER bytes, auto-detecting the encoding.

Parameters:
encoding - the key bytes.
Returns:
the recovered private key.
Throws:
java.io.IOException - on a parse or decryption failure.

readKey

public java.security.PrivateKey readKey(java.io.Reader reader)
                                 throws java.io.IOException
Read a private key from a PEM reader. The reader is consumed but not closed.

Parameters:
reader - a reader positioned at a PEM private key object.
Returns:
the recovered private key.
Throws:
java.io.IOException - on a parse or decryption failure.

Bouncy Castle Cryptography Library 1.85