This class
translates asymmetric cryptographic keys between the two
representations used by the Java Security API.
java.security.Key is the opaque,
algorithm-independent representation of a key used by most of the
Security API. java.security.spec.KeySpec is a
marker interface implemented by transparent, algorithm-specific
representations of keys. KeyFactory is used with
public and private keys; see
javax.crypto.SecretKeyFactory if you are working
with symmetric or secret keys.To
convert a Key to a KeySpec or
vice versa, create a KeyFactory by calling one of
the static getInstance( ) factory methods
specifying the name of the key algorithm (e.g., DSA or RSA) and
optionally specifying the name or Provider object
for the desired provider. Then, use generatePublic(
) or generatePrivate( ) to create a
PublicKey or PrivateKey object
from a corresponding KeySpec. Or use
getKeySpec( ) to obtain a
KeySpec for a given Key.
Because there can be more than one KeySpec
implementation used by a particular cryptographic algorithm, you must
also specify the Class of the
KeySpec you desire.If you do not need to transport keys portably between applications
and/or systems, you can use a KeyStore to store
and retrieve keys and certificates, avoiding
KeySpec and KeyFactory
altogether.
public class KeyFactory {
// Protected Constructors
protected KeyFactory (KeyFactorySpi keyFacSpi , Provider provider ,
String algorithm );
// Public Class Methods
public static KeyFactory getInstance (String algorithm )
throws NoSuchAlgorithmException;
public static KeyFactory getInstance (String algorithm , String provider )
throws NoSuchAlgorithmException, NoSuchProviderException;
1.4 public static KeyFactory getInstance (String algorithm , Provider provider )
throws NoSuchAlgorithmException;
// Public Instance Methods
public final PrivateKey generatePrivate (java.security.spec.KeySpec keySpec )
throws java.security.spec.InvalidKeySpecException;
public final PublicKey generatePublic (java.security.spec.KeySpec keySpec )
throws java.security.spec.InvalidKeySpecException;
public final String getAlgorithm ( );
public final <T extends java.security.spec.KeySpec> T getKeySpec (Key key ,
Class<T> keySpec )
throws java.security.spec.InvalidKeySpecException;
public final Provider getProvider ( );
public final Key translateKey (Key key ) throws InvalidKeyException;
}