For the latest news and information visit The GNU Crypto project

## javax.crypto
Class SecretKeyFactory

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

public class SecretKeyFactory
extends java.lang.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, java.security.Provider provider, java.lang.String algorithm)` Creates a SecretKeyFactory object.

Method Summary
`SecretKey` `generateSecret(java.security.spec.KeySpec keySpec)` Generates a `SecretKey` object from the provided key specification (key material).
`java.lang.String` `getAlgorithm()` Returns the algorithm name of this `SecretKeyFactory` object.
`static SecretKeyFactory` `getInstance(java.lang.String algorithm)` Generates a `SecretKeyFactory` object for the specified secret-key algorithm.
`static SecretKeyFactory` `getInstance(java.lang.String algorithm, java.security.Provider provider)` Generates a `SecretKeyFactory` object for the specified secret-key algorithm from the specified provider.
`static SecretKeyFactory` `getInstance(java.lang.String algorithm, java.lang.String provider)` Generates a `SecretKeyFactory` object for the specified secret-key algorithm from the specified provider.
`java.security.spec.KeySpec` `getKeySpec(SecretKey key, java.lang.Class keySpec)` Returns a specification (key material) of the given key object in the requested format.
`java.security.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,
                               java.security.Provider provider,
                               java.lang.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(java.lang.String algorithm)
                                              throws java.security.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 API Specification & Reference for information about standard algorithm names.
  Returns:
    a `SecretKeyFactory` object for the specified secret-key algorithm.
  Throws:
    `java.security.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(java.lang.String algorithm,
                                                     java.security.Provider provider)
                                              throws java.security.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.
  Returns:
    a `SecretKeyFactory` object for the specified secret- key algorithm.
  Throws:
    `java.security.NoSuchAlgorithmException` - if a secret-key factory for the specified algorithm is not available from the specified provider.
    `java.lang.IllegalArgumentException` - if the provider is null.

### getInstance

    public static final SecretKeyFactory getInstance(java.lang.String algorithm,
                                                     java.lang.String provider)
                                              throws java.security.NoSuchAlgorithmException,
                                                     java.security.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 API Specification & Reference for information about standard algorithm names.
    `provider` - the name of the provider.
  Returns:
    a `SecretKeyFactory` object for the specified secret-key algorithm.
  Throws:
    `java.security.NoSuchAlgorithmException` - if a secret-key factory for the specified algorithm is not available from the specified provider.
    `java.security.NoSuchProviderException` - if the specified provider has not been configured.

### getProvider

    public final java.security.Provider getProvider()

  Returns the provider of this `SecretKeyFactory` object.

  Returns:
    the provider of this `SecretKeyFactory` object

### getAlgorithm

    public final java.lang.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(java.security.spec.KeySpec keySpec)
                                   throws java.security.spec.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:
    `java.security.spec.InvalidKeySpecException` - if the given key specification is inappropriate for this secret-key factory to produce a secret key.

### getKeySpec

    public final java.security.spec.KeySpec getKeySpec(SecretKey key,
                                                       java.lang.Class keySpec)
                                                throws java.security.spec.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:
    `java.security.spec.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 java.security.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:
    `java.security.InvalidKeyException` - if the given key cannot be processed by this secret-key factory.

For the latest news and information visit The GNU Crypto project

Copyright © 2001, 2002, 2003, 2004 Free Software Foundation, Inc.