com.maverick.sshd.components.jce
Class JCEServerComponentManager

java.lang.Object
  extended by com.maverick.sshd.components.ServerComponentManager
      extended by com.maverick.sshd.components.jce.JCEServerComponentManager
All Implemented Interfaces:
JCEAlgorithms

public class JCEServerComponentManager
extends ServerComponentManager
implements JCEAlgorithms

A component manager for the Java runtime JCE provider. By default all algorithms will be selected from the default provider i.e no provider is specified in calls to JCE methods to create components. You can initialize a default provider to be used on all calls with the following code:

 JCEComponentManager.initializeDefaultProvider(new BouncyCastleProvider());
 
Alternatively you can also assign a specific provider for an individual algorithm, all algorithms used by the API are included as static constants in this class.
 JCEComponentManager.initializeProviderForAlgorithm(JCEComponentManager.JCE_DSA, new BouncyCastleProvider());
 

Author:
Lee David Painter

Field Summary
 
Fields inherited from interface com.maverick.ssh.components.jce.JCEAlgorithms
JCE_AESCBCNOPADDING, JCE_AESCTRNOPADDING, JCE_BLOWFISHCBCNOPADDING, JCE_DESCBCNOPADDING, JCE_DH, JCE_DSA, JCE_HMACMD5, JCE_HMACSHA1, JCE_HMACSHA256, JCE_HMACSHA512, JCE_MD5, JCE_MD5WithRSA, JCE_RSA, JCE_RSANONEPKCS1PADDING, JCE_SHA1, JCE_SHA1PRNG, JCE_SHA1WithDSA, JCE_SHA1WithRSA, JCE_X509
 
Constructor Summary
JCEServerComponentManager()
           
 
Method Summary
 SshDsaPrivateKey createDsaPrivateKey(java.math.BigInteger p, java.math.BigInteger q, java.math.BigInteger g, java.math.BigInteger x, java.math.BigInteger y)
          Create a DSA private key from DSA parameters.
 SshDsaPublicKey createDsaPublicKey()
          Create an uninitialized instance of a DSA public key.
 SshDsaPublicKey createDsaPublicKey(java.math.BigInteger p, java.math.BigInteger q, java.math.BigInteger g, java.math.BigInteger y)
          Create an instance of an DSA public key.
 SshRsaPrivateCrtKey createRsaPrivateCrtKey(java.math.BigInteger modulus, java.math.BigInteger publicExponent, java.math.BigInteger privateExponent, java.math.BigInteger primeP, java.math.BigInteger primeQ, java.math.BigInteger crtCoefficient)
          Create a RSA co-efficient key from RSA parameters.
 SshRsaPrivateCrtKey createRsaPrivateCrtKey(java.math.BigInteger modulus, java.math.BigInteger publicExponent, java.math.BigInteger privateExponent, java.math.BigInteger primeP, java.math.BigInteger primeQ, java.math.BigInteger primeExponentP, java.math.BigInteger primeExponentQ, java.math.BigInteger crtCoefficient)
          Create an RSA co-efficient key from RSA parameters.
 SshRsaPrivateKey createRsaPrivateKey(java.math.BigInteger modulus, java.math.BigInteger privateExponent)
          Create an RSA private key from RSA parameters
 SshRsaPublicKey createRsaPublicKey(java.math.BigInteger modulus, java.math.BigInteger publicExponent, int version)
          Create an instance of an RSA public key from RSA parameters.
 SshRsaPublicKey createSsh2RsaPublicKey()
          Create an uninitialized instance of an RSA public key
 SshKeyPair generateDsaKeyPair(int bits)
          Generate a DSA key pair.
 SshKeyPair generateRsaKeyPair(int bits)
          Generate an RSA key pair.
static java.security.Provider getProviderForAlgorithm(java.lang.String jceAlgorithm)
          Get the provider for a specific algorithm.
 SshSecureRandomGenerator getRND()
          Get the secure number generator implementation.
static java.security.SecureRandom getSecureRandom()
          Get the secure random implementation for the API.
static java.lang.String getSecureRandomAlgorithm()
          Get the algorithm used for secure random number generation.
static void initializeDefaultProvider(java.security.Provider provider)
          Initialize the default JCE provider used by the API.
protected  void initializeDigestFactory(ComponentFactory digests)
          Initialize the digest factory.
protected  void initializeHmacFactory(ComponentFactory hmacs)
          Initialize the SSH2 HMac factory.
protected  void initializeKeyExchangeFactory(ComponentFactory keyexchange)
          Initialize the key exchange factory.
static void initializeProviderForAlgorithm(java.lang.String jceAlgorithm, java.security.Provider provider)
          Initialize a provider for a specific algorithm.
protected  void initializePublicKeyFactory(ComponentFactory publickeys)
          Initialize the public key factory.
protected  void initializeSsh2CipherFactory(ComponentFactory ciphers)
          Initialize the SSH2 cipher factory.
 void loadKeystore(java.io.File keystoreFile, java.lang.String alias, java.lang.String storePassphrase, java.lang.String keyPassphrase, SshContext context)
          Load a host key from a keystore file.
 void loadKeystore(java.io.File keystoreFile, java.lang.String alias, java.lang.String storePassphrase, java.lang.String keyPassphrase, java.lang.String storeType, SshContext context)
           
 void loadKeystore(java.io.InputStream in, java.lang.String alias, java.lang.String storePassphrase, java.lang.String keyPassphrase, SshContext context)
          Load a keystore for use as an SSH host key.
 void loadKeystore(java.io.InputStream in, java.lang.String alias, java.lang.String storePassphrase, java.lang.String keyPassphrase, java.lang.String storeType, SshContext context)
          Load a keystore for use as an SSH host key.
static void setSecureRandomAlgorithm(java.lang.String secureRandomAlgorithm)
          Set the algorithm used for secure random number generation.
 
Methods inherited from class com.maverick.sshd.components.ServerComponentManager
getInstance, getPerContextAlgorithmPreferences, init, isEnableNoneCipher, setEnableNoneCipher, setInstance, setPerContextAlgorithmPreferences, supportedDigests, supportedHMacsCS, supportedHMacsSC, supportedKeyExchanges, supportedPublicKeys, supportedSsh2CiphersCS, supportedSsh2CiphersSC
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JCEServerComponentManager

public JCEServerComponentManager()
Method Detail

initializeDefaultProvider

public static void initializeDefaultProvider(java.security.Provider provider)
Initialize the default JCE provider used by the API.

Parameters:
provider -

initializeProviderForAlgorithm

public static void initializeProviderForAlgorithm(java.lang.String jceAlgorithm,
                                                  java.security.Provider provider)
Initialize a provider for a specific algorithm.

Parameters:
jceAlgorithm -
provider -

getSecureRandomAlgorithm

public static java.lang.String getSecureRandomAlgorithm()
Get the algorithm used for secure random number generation.

Returns:
String

setSecureRandomAlgorithm

public static void setSecureRandomAlgorithm(java.lang.String secureRandomAlgorithm)
Set the algorithm used for secure random number generation.

Parameters:
secureRandomAlgorithm -

getProviderForAlgorithm

public static java.security.Provider getProviderForAlgorithm(java.lang.String jceAlgorithm)
Get the provider for a specific algorithm.

Parameters:
jceAlgorithm -
Returns:
Provider

getSecureRandom

public static java.security.SecureRandom getSecureRandom()
                                                  throws java.security.NoSuchAlgorithmException
Get the secure random implementation for the API.

Returns:
SecureRandom
Throws:
java.security.NoSuchAlgorithmException

createDsaPrivateKey

public SshDsaPrivateKey createDsaPrivateKey(java.math.BigInteger p,
                                            java.math.BigInteger q,
                                            java.math.BigInteger g,
                                            java.math.BigInteger x,
                                            java.math.BigInteger y)
                                     throws SshException
Description copied from class: ServerComponentManager
Create a DSA private key from DSA parameters.

Specified by:
createDsaPrivateKey in class ServerComponentManager
Returns:
SshDsaPrivateKey
Throws:
SshException

createDsaPublicKey

public SshDsaPublicKey createDsaPublicKey(java.math.BigInteger p,
                                          java.math.BigInteger q,
                                          java.math.BigInteger g,
                                          java.math.BigInteger y)
                                   throws SshException
Description copied from class: ServerComponentManager
Create an instance of an DSA public key.

Specified by:
createDsaPublicKey in class ServerComponentManager
Returns:
SshDsaPublicKey
Throws:
SshException

createDsaPublicKey

public SshDsaPublicKey createDsaPublicKey()
Description copied from class: ServerComponentManager
Create an uninitialized instance of a DSA public key.

Specified by:
createDsaPublicKey in class ServerComponentManager
Returns:
SshDsaPublicKey

createRsaPrivateCrtKey

public SshRsaPrivateCrtKey createRsaPrivateCrtKey(java.math.BigInteger modulus,
                                                  java.math.BigInteger publicExponent,
                                                  java.math.BigInteger privateExponent,
                                                  java.math.BigInteger primeP,
                                                  java.math.BigInteger primeQ,
                                                  java.math.BigInteger crtCoefficient)
                                           throws SshException
Description copied from class: ServerComponentManager
Create a RSA co-efficient key from RSA parameters.

Specified by:
createRsaPrivateCrtKey in class ServerComponentManager
Returns:
SshRsaPrivateCrtKey
Throws:
SshException

createRsaPrivateCrtKey

public SshRsaPrivateCrtKey createRsaPrivateCrtKey(java.math.BigInteger modulus,
                                                  java.math.BigInteger publicExponent,
                                                  java.math.BigInteger privateExponent,
                                                  java.math.BigInteger primeP,
                                                  java.math.BigInteger primeQ,
                                                  java.math.BigInteger primeExponentP,
                                                  java.math.BigInteger primeExponentQ,
                                                  java.math.BigInteger crtCoefficient)
                                           throws SshException
Description copied from class: ServerComponentManager
Create an RSA co-efficient key from RSA parameters.

Specified by:
createRsaPrivateCrtKey in class ServerComponentManager
Returns:
SshRsaPrivateCrtKey
Throws:
SshException

createRsaPrivateKey

public SshRsaPrivateKey createRsaPrivateKey(java.math.BigInteger modulus,
                                            java.math.BigInteger privateExponent)
                                     throws SshException
Description copied from class: ServerComponentManager
Create an RSA private key from RSA parameters

Specified by:
createRsaPrivateKey in class ServerComponentManager
Returns:
SshRsaPrivateKey
Throws:
SshException

createRsaPublicKey

public SshRsaPublicKey createRsaPublicKey(java.math.BigInteger modulus,
                                          java.math.BigInteger publicExponent,
                                          int version)
                                   throws SshException
Description copied from class: ServerComponentManager
Create an instance of an RSA public key from RSA parameters.

Specified by:
createRsaPublicKey in class ServerComponentManager
Returns:
SshRsaPublicKey
Throws:
SshException

createSsh2RsaPublicKey

public SshRsaPublicKey createSsh2RsaPublicKey()
                                       throws SshException
Description copied from class: ServerComponentManager
Create an uninitialized instance of an RSA public key

Specified by:
createSsh2RsaPublicKey in class ServerComponentManager
Returns:
SshRsaPublicKey
Throws:
SshException

generateDsaKeyPair

public SshKeyPair generateDsaKeyPair(int bits)
                              throws SshException
Description copied from class: ServerComponentManager
Generate a DSA key pair.

Specified by:
generateDsaKeyPair in class ServerComponentManager
Returns:
SshKeyPair
Throws:
SshException

generateRsaKeyPair

public SshKeyPair generateRsaKeyPair(int bits)
                              throws SshException
Description copied from class: ServerComponentManager
Generate an RSA key pair.

Specified by:
generateRsaKeyPair in class ServerComponentManager
Returns:
SshKeyPair
Throws:
SshException

getRND

public SshSecureRandomGenerator getRND()
                                throws SshException
Description copied from class: ServerComponentManager
Get the secure number generator implementation.

Specified by:
getRND in class ServerComponentManager
Returns:
SshSecureRandomGenerator
Throws:
SshException

initializeDigestFactory

protected void initializeDigestFactory(ComponentFactory digests)
Description copied from class: ServerComponentManager
Initialize the digest factory.

Specified by:
initializeDigestFactory in class ServerComponentManager

initializeHmacFactory

protected void initializeHmacFactory(ComponentFactory hmacs)
Description copied from class: ServerComponentManager
Initialize the SSH2 HMac factory.

Specified by:
initializeHmacFactory in class ServerComponentManager

initializeKeyExchangeFactory

protected void initializeKeyExchangeFactory(ComponentFactory keyexchange)
Description copied from class: ServerComponentManager
Initialize the key exchange factory.

Specified by:
initializeKeyExchangeFactory in class ServerComponentManager

initializePublicKeyFactory

protected void initializePublicKeyFactory(ComponentFactory publickeys)
Description copied from class: ServerComponentManager
Initialize the public key factory.

Specified by:
initializePublicKeyFactory in class ServerComponentManager

initializeSsh2CipherFactory

protected void initializeSsh2CipherFactory(ComponentFactory ciphers)
Description copied from class: ServerComponentManager
Initialize the SSH2 cipher factory.

Specified by:
initializeSsh2CipherFactory in class ServerComponentManager

loadKeystore

public void loadKeystore(java.io.InputStream in,
                         java.lang.String alias,
                         java.lang.String storePassphrase,
                         java.lang.String keyPassphrase,
                         SshContext context)
                  throws java.io.IOException
Load a keystore for use as an SSH host key. This will create a public key using the X509V3_SIGN_RSA and X509V3_SIGN_RSA_SHA1 host key types. DSA keys are currently not supported.

Specified by:
loadKeystore in class ServerComponentManager
Parameters:
keystoreFile - path to the keystore file
alias - the alias of the key in the keystore
storePassphrase - the passphrase of the keystore
keyPassphrase - the passphrase of the key
Throws:
java.io.IOException

loadKeystore

public void loadKeystore(java.io.InputStream in,
                         java.lang.String alias,
                         java.lang.String storePassphrase,
                         java.lang.String keyPassphrase,
                         java.lang.String storeType,
                         SshContext context)
                  throws java.io.IOException
Load a keystore for use as an SSH host key. This will create a public key using the X509V3_SIGN_RSA and X509V3_SIGN_RSA_SHA1 host key types. DSA keys are currently not supported.

Specified by:
loadKeystore in class ServerComponentManager
Parameters:
keystoreFile - path to the keystore file
alias - the alias of the key in the keystore
storePassphrase - the passphrase of the keystore
keyPassphrase - the passphrase of the key
Throws:
java.io.IOException

loadKeystore

public void loadKeystore(java.io.File keystoreFile,
                         java.lang.String alias,
                         java.lang.String storePassphrase,
                         java.lang.String keyPassphrase,
                         SshContext context)
                  throws java.io.IOException
Description copied from class: ServerComponentManager
Load a host key from a keystore file.

Specified by:
loadKeystore in class ServerComponentManager
Throws:
java.io.IOException

loadKeystore

public void loadKeystore(java.io.File keystoreFile,
                         java.lang.String alias,
                         java.lang.String storePassphrase,
                         java.lang.String keyPassphrase,
                         java.lang.String storeType,
                         SshContext context)
                  throws java.io.IOException
Specified by:
loadKeystore in class ServerComponentManager
Throws:
java.io.IOException


Copyright © 2003-2008 SSHTools LTD. All Rights Reserved.