Team LiB
Previous Section Next Section

KeyFactoryjava.security

Java 1.2

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;  
}

    Team LiB
    Previous Section Next Section