iaik.security.rsa
Class RSAKeyFactory

java.lang.Object
  |
  +--java.security.KeyFactorySpi
        |
        +--iaik.security.rsa.RSAKeyFactory

public final class RSAKeyFactory
extends KeyFactorySpi

This class converts RSA keys (opaque representation) in their KeySpecs (transparent representation) and vice versa.

To convert, for instance, DER encoded PKCS#8 private key material (e.g. pkcs8_key_spec instantiated from PKCS8EncodedKeySpec) into RSAPrivateKey representation, use this KeyFactory for RSA keys:

 KeyFactory rsa_key_fac = KeyFactory.getInstance("RSA");
 RSAPrivateKey rsa_priv_key = (RSAPrivateKey)rsa_key_fac.generatePrivate(pkcs8_key_spec);
 

Version:
File Revision 17
See Also:
RSAPrivateKey, RSAPublicKey

Constructor Summary
RSAKeyFactory()
          Default constructor for creating a RSAKeyFactory.
 
Method Summary
protected  PrivateKey engineGeneratePrivate(KeySpec keySpec)
          Converts the given key specification to a PrivateKey.
protected  PublicKey engineGeneratePublic(KeySpec keySpec)
          Converts the given key specification to a PublicKey.
protected  KeySpec engineGetKeySpec(Key key, Class classSpec)
          Converts the given key into the requested key specification (key material).
protected  Key engineTranslateKey(Key key)
          Translates the given key object of some unknown or untrusted provider into a key object supported by this RSA key factory.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RSAKeyFactory

public RSAKeyFactory()
Default constructor for creating a RSAKeyFactory. Applications shall use
 KeyFactory.getInstance("RSA");
 
for instantiating a RSAKeyFactory.
Method Detail

engineGeneratePrivate

protected PrivateKey engineGeneratePrivate(KeySpec keySpec)
                                    throws InvalidKeySpecException
Converts the given key specification to a PrivateKey.

The given key material may either be a RSAPrivateKeySpec or RSAPrivateKeyCrtSpec, or a PKCS8EncodedKeySpec.

Overrides:
engineGeneratePrivate in class KeyFactorySpi
Parameters:
keySpec - the key specification as RSAPrivateKeySpec, RSAPrivateKeyCrtSpec or PKCS8EncodedKeySpec
Returns:
the resulting PrivateKey
Throws:
InvalidKeySpecException - if the given key material is not a RSAPrivateKeySpec, RSAPrivateKeyCrtSpec or PKCS8EncodedKeySpec

engineGeneratePublic

protected PublicKey engineGeneratePublic(KeySpec keySpec)
                                  throws InvalidKeySpecException
Converts the given key specification to a PublicKey.

The given key material may either be a RSAPublicKeySpec or a X509EncodedKeySpec.

Overrides:
engineGeneratePublic in class KeyFactorySpi
Parameters:
keySpec - the key specification as RSAPublicKeySpec or X509EncodedKeySpec
Returns:
the resulting PublicKey
Throws:
InvalidKeySpecException - if the given key material is not a RSAPublicKeySpec or X509EncodedKeySpec

engineGetKeySpec

protected KeySpec engineGetKeySpec(Key key,
                                   Class classSpec)
                            throws InvalidKeySpecException
Converts the given key into the requested key specification (key material).

The given key may either be a RSAPublicKey or a RSAPrivateKey. If the key is a RSAPublicKey, this method only can create a RSAPublicKeySpec or a X509EncodedKeySpec from it. If the given key is a RSAPrivateKey, a RSAPrivateKeySpec, RSAPrivateCrtKeySpec, or a PKCS8EncodedKeySpec may be returned, depending on which of these types of specifications is requested by classSpec. Each attempt to get key material of a type not matching to a given RSA key will raise an exception.

Overrides:
engineGetKeySpec in class KeyFactorySpi
Parameters:
key - the key to be converted, which either may be a RSAPublicKey or a RSAPrivateKey.
keySpec - the key specification type into which the key shall be converted, which may be a RSAPublicKeySpec or a X509EncodedKeySpec if the given key is a RSAPublicKey, or a RSAPrivateKey(Crt)Spec or a PKCS8EncodedKeySpec if the given key is a RSAPrivateKey
Returns:
the key specification (key material) derived from the given key
Throws:
InvalidKeySpecException - if the given key cannot be converted into the requested key specification object by this key factory

engineTranslateKey

protected Key engineTranslateKey(Key key)
                          throws InvalidKeyException
Translates the given key object of some unknown or untrusted provider into a key object supported by this RSA key factory. This method only can translate keys of type RSAPublicKey or RSAPrivateKey.
Overrides:
engineTranslateKey in class KeyFactorySpi
Parameters:
key - the key of some unknown or untrusted provider
Returns:
the translated key
Throws:
InvalidKeyException - if the given key cannot be translated by this key factory

This Javadoc may contain text parts from Internet Standard specifications (RFC 2459, 3280, 3039, 2560, 1521, 821, 822, 2253, 1319, 1321, ,2630, 2631, 2268, 3058, 2984, 2104, 2144, 2040, 2311, 2279, see copyright note) and RSA Data Security Public-Key Cryptography Standards (PKCS#1,3,5,7,8,9,10,12, see copyright note).

IAIK-JCE 3.1 with IAIK-JCE CC Core 3.1, (c) 1997-2004 IAIK