org.apache.commons.ssl
Class KeyStoreBuilder

java.lang.Object
  extended by org.apache.commons.ssl.KeyStoreBuilder

public class KeyStoreBuilder
extends Object

Builds Java Key Store files out of pkcs12 files, or out of pkcs8 files + certificate chains. Also supports OpenSSL style private keys (encrypted or unencrypted).

Since:
4-Nov-2006
Author:
Credit Union Central of British Columbia, www.cucbc.com, juliusdavies@cucbc.com

Nested Class Summary
static class KeyStoreBuilder.BuildResult
           
 
Field Summary
private static String PKCS7_ENCRYPTED
           
 
Constructor Summary
KeyStoreBuilder()
           
 
Method Summary
static KeyStore build(byte[] jksOrCerts, byte[] privateKey, char[] password)
           
static KeyStore build(byte[] jksOrCerts, byte[] privateKey, char[] jksPassword, char[] keyPassword)
           
static KeyStore build(byte[] jksOrCerts, char[] password)
           
static X509Certificate buildChain(Key key, Certificate[] chain)
          Builds the chain up such that chain[ 0 ] contains the public key corresponding to the supplied private key.
static void main(String[] args)
           
static KeyStoreBuilder.BuildResult parse(byte[] stuff, char[] jksPass, char[] keyPass)
           
private static X509Certificate[] toChain(Collection certs)
           
private static KeyStoreBuilder.BuildResult tryJKS(String keystoreType, ByteArrayInputStream in, char[] jksPassword, char[] keyPassword)
           
static KeyStoreBuilder.BuildResult validate(KeyStore jks, char[] keyPass)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PKCS7_ENCRYPTED

private static final String PKCS7_ENCRYPTED
See Also:
Constant Field Values
Constructor Detail

KeyStoreBuilder

public KeyStoreBuilder()
Method Detail

build

public static KeyStore build(byte[] jksOrCerts,
                             char[] password)
                      throws IOException,
                             CertificateException,
                             KeyStoreException,
                             NoSuchAlgorithmException,
                             InvalidKeyException,
                             NoSuchProviderException,
                             ProbablyBadPasswordException,
                             UnrecoverableKeyException
Throws:
IOException
CertificateException
KeyStoreException
NoSuchAlgorithmException
InvalidKeyException
NoSuchProviderException
ProbablyBadPasswordException
UnrecoverableKeyException

build

public static KeyStore build(byte[] jksOrCerts,
                             byte[] privateKey,
                             char[] password)
                      throws IOException,
                             CertificateException,
                             KeyStoreException,
                             NoSuchAlgorithmException,
                             InvalidKeyException,
                             NoSuchProviderException,
                             ProbablyBadPasswordException,
                             UnrecoverableKeyException
Throws:
IOException
CertificateException
KeyStoreException
NoSuchAlgorithmException
InvalidKeyException
NoSuchProviderException
ProbablyBadPasswordException
UnrecoverableKeyException

build

public static KeyStore build(byte[] jksOrCerts,
                             byte[] privateKey,
                             char[] jksPassword,
                             char[] keyPassword)
                      throws IOException,
                             CertificateException,
                             KeyStoreException,
                             NoSuchAlgorithmException,
                             InvalidKeyException,
                             NoSuchProviderException,
                             ProbablyBadPasswordException,
                             UnrecoverableKeyException
Throws:
IOException
CertificateException
KeyStoreException
NoSuchAlgorithmException
InvalidKeyException
NoSuchProviderException
ProbablyBadPasswordException
UnrecoverableKeyException

buildChain

public static X509Certificate buildChain(Key key,
                                         Certificate[] chain)
                                  throws CertificateException,
                                         KeyStoreException,
                                         NoSuchAlgorithmException,
                                         InvalidKeyException,
                                         NoSuchProviderException
Builds the chain up such that chain[ 0 ] contains the public key corresponding to the supplied private key.

Parameters:
key - private key
chain - array of certificates to build chain from
Returns:
theOne!
Throws:
KeyStoreException - no certificates correspond to private key
CertificateException - java libraries complaining
NoSuchAlgorithmException - java libraries complaining
InvalidKeyException - java libraries complaining
NoSuchProviderException - java libraries complaining

validate

public static KeyStoreBuilder.BuildResult validate(KeyStore jks,
                                                   char[] keyPass)
                                            throws CertificateException,
                                                   KeyStoreException,
                                                   NoSuchAlgorithmException,
                                                   InvalidKeyException,
                                                   NoSuchProviderException,
                                                   UnrecoverableKeyException
Throws:
CertificateException
KeyStoreException
NoSuchAlgorithmException
InvalidKeyException
NoSuchProviderException
UnrecoverableKeyException

parse

public static KeyStoreBuilder.BuildResult parse(byte[] stuff,
                                                char[] jksPass,
                                                char[] keyPass)
                                         throws IOException,
                                                CertificateException,
                                                KeyStoreException,
                                                ProbablyBadPasswordException
Throws:
IOException
CertificateException
KeyStoreException
ProbablyBadPasswordException

tryJKS

private static KeyStoreBuilder.BuildResult tryJKS(String keystoreType,
                                                  ByteArrayInputStream in,
                                                  char[] jksPassword,
                                                  char[] keyPassword)
                                           throws ProbablyBadPasswordException
Throws:
ProbablyBadPasswordException

toChain

private static X509Certificate[] toChain(Collection certs)

main

public static void main(String[] args)
                 throws Exception
Throws:
Exception