Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.crypto
Class SecretKeyFactory

    java.lang.Object
      |
      +--javax.crypto.SecretKeyFactory

public class SecretKeyFactory
extends Object

This class represents a factory for secret keys.

Key factories are used to convert keys (opaque cryptographic keys of type `Key`) into key specifications (transparent representations of the underlying key material), and vice versa. Secret key factories operate only on secret (symmetric) keys.

Key factories are bi-directional, i.e., they allow to build an opaque key object from a given key specification (key material), or to retrieve the underlying key material of a key object in a suitable format.

Application developers should refer to their provider's documentation to find out which key specifications are supported by the `generateSecret` and `getKeySpec` methods. For example, the DES secret-key factory supplied by the "SunJCE" provider supports `DESKeySpec` as a transparent representation of DES keys, and that provider's secret-key factory for Triple DES keys supports `DESedeKeySpec` as a transparent representation of Triple DES keys.

Since:
  1.4
See Also:
  `SecretKey`, `DESKeySpec`, `DESedeKeySpec`, `PBEKeySpec`

Constructor Summary
`protected` | `SecretKeyFactory(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm)` Creates a SecretKeyFactory object.

Method Summary
`SecretKey` | `generateSecret(KeySpec keySpec)` Generates a `SecretKey` object from the provided key specification (key material).
`String` | `getAlgorithm()` Returns the algorithm name of this `SecretKeyFactory` object.
`static SecretKeyFactory` | `getInstance(String algorithm)` Generates a `SecretKeyFactory` object for the specified secret-key algorithm.
`static SecretKeyFactory` | `getInstance(String algorithm, Provider provider)` Generates a `SecretKeyFactory` object for the specified secret-key algorithm from the specified provider.
`static SecretKeyFactory` | `getInstance(String algorithm, String provider)` Generates a `SecretKeyFactory` object for the specified secret-key algorithm from the specified provider.
`KeySpec` | `getKeySpec(SecretKey key, Class keySpec)` Returns a specification (key material) of the given key object in the requested format.
`Provider` | `getProvider()` Returns the provider of this `SecretKeyFactory` object.
`SecretKey` | `translateKey(SecretKey key)` Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this secret-key factory.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SecretKeyFactory

    protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi,
                               Provider provider,
                               String algorithm)

  Creates a SecretKeyFactory object.

Parameters:
  `keyFacSpi` - the delegate
  `provider` - the provider
  `algorithm` - the secret-key algorithm

Method Detail

### getInstance

    public static final SecretKeyFactory getInstance(String algorithm)
                                              throws NoSuchAlgorithmException

  Generates a `SecretKeyFactory` object for the specified secret-key algorithm. If the default provider package provides an implementation of the requested factory, an instance of `SecretKeyFactory` containing that implementation is returned. If the requested factory is not available in the default provider package, other provider packages are searched.

  Parameters:
    `algorithm` - the standard name of the requested secret-key algorithm. See Appendix A in the Java Cryptography Extension Reference Guide for information about standard algorithm names.
  Returns:
    a `SecretKeyFactory` object for the specified secret-key algorithm.
  Throws:
    `NoSuchAlgorithmException` - if a secret-key factory for the specified algorithm is not available in the default provider package or any of the other provider packages that were searched.

### getInstance

    public static final SecretKeyFactory getInstance(String algorithm,
                                                     String provider)
                                              throws NoSuchAlgorithmException,
                                                     NoSuchProviderException

  Generates a `SecretKeyFactory` object for the specified secret-key algorithm from the specified provider.

  Parameters:
    `algorithm` - the standard name of the requested secret-key algorithm. See Appendix A in the Java Cryptography Extension Reference Guide for information about standard algorithm names.
    `provider` - the name of the provider.
  Returns:
    a `SecretKeyFactory` object for the specified secret-key algorithm.
  Throws:
    `NoSuchAlgorithmException` - if a secret-key factory for the specified algorithm is not available from the specified provider.
    `NoSuchProviderException` - if the specified provider has not been configured.
    `IllegalArgumentException` - if the `provider` is null.

### getInstance

    public static final SecretKeyFactory getInstance(String algorithm,
                                                     Provider provider)
                                              throws NoSuchAlgorithmException

  Generates a `SecretKeyFactory` object for the specified secret-key algorithm from the specified provider. Note: the `provider` doesn't have to be registered.

  Parameters:
    `algorithm` - the standard name of the requested secret-key algorithm. See Appendix A in the Java Cryptography Extension Reference Guide for information about standard algorithm names.
    `provider` - the provider.
  Returns:
    a `SecretKeyFactory` object for the specified secret-key algorithm.
  Throws:
    `NoSuchAlgorithmException` - if a secret-key factory for the specified algorithm is not available from the specified provider.
    `IllegalArgumentException` - if the `provider` is null.

### getProvider

    public final Provider getProvider()

  Returns the provider of this `SecretKeyFactory` object.

  Returns:
    the provider of this `SecretKeyFactory` object

### getAlgorithm

    public final String getAlgorithm()

  Returns the algorithm name of this `SecretKeyFactory` object.

  This is the same name that was specified in one of the `getInstance` calls that created this `SecretKeyFactory` object.

  Returns:
    the algorithm name of this `SecretKeyFactory` object.

### generateSecret

    public final SecretKey generateSecret(KeySpec keySpec)
                                   throws InvalidKeySpecException

  Generates a `SecretKey` object from the provided key specification (key material).

  Parameters:
    `keySpec` - the specification (key material) of the secret key
  Returns:
    the secret key
  Throws:
    `InvalidKeySpecException` - if the given key specification is inappropriate for this secret-key factory to produce a secret key.

### getKeySpec

    public final KeySpec getKeySpec(SecretKey key,
                                    Class keySpec)
                             throws InvalidKeySpecException

  Returns a specification (key material) of the given key object in the requested format.

  Parameters:
    `key` - the key
    `keySpec` - the requested format in which the key material shall be returned
  Returns:
    the underlying key specification (key material) in the requested format
  Throws:
    `InvalidKeySpecException` - if the requested key specification is inappropriate for the given key (e.g., the algorithms associated with `key` and `keySpec` do not match, or `key` references a key on a cryptographic hardware device whereas `keySpec` is the specification of a software-based key), or the given key cannot be dealt with (e.g., the given key has an algorithm or format not supported by this secret-key factory).

### translateKey

    public final SecretKey translateKey(SecretKey key)
                                 throws InvalidKeyException

  Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this secret-key factory.

  Parameters:
    `key` - the key whose provider is unknown or untrusted
  Returns:
    the translated key
  Throws:
    `InvalidKeyException` - if the given key cannot be processed by this secret-key factory.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.