Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Java™ Platform Standard Ed. 6
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## java.security
Class KeyFactorySpi

    java.lang.Object
      java.security.KeyFactorySpi

    public abstract class KeyFactorySpi

extends Object

This class defines the Service Provider Interface (SPI) for the `KeyFactory` class. All the abstract methods in this class must be implemented by each cryptographic service provider who wishes to supply the implementation of a key factory for a particular algorithm.

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.

Key factories are bi-directional. That is, they allow you 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.

Multiple compatible key specifications may exist for the same key. For example, a DSA public key may be specified using `DSAPublicKeySpec` or `X509EncodedKeySpec`. A key factory can be used to translate between compatible key specifications.

A provider should document all the key specifications supported by its key factory.

Since:
  1.2
See Also:
  `KeyFactory`, `Key`, `PublicKey`, `PrivateKey`, `KeySpec`, `DSAPublicKeySpec`, `X509EncodedKeySpec`

Constructor Summary
`KeyFactorySpi()`

Method Summary
`protected abstract PrivateKey` | `engineGeneratePrivate(KeySpec keySpec)` Generates a private key object from the provided key specification (key material).
`protected abstract PublicKey` | `engineGeneratePublic(KeySpec keySpec)` Generates a public key object from the provided key specification (key material).
`protected abstract
`<T extends KeySpec> T`
` | `engineGetKeySpec(Key key, Class<T> keySpec)` Returns a specification (key material) of the given key object.
`protected abstract Key` | `engineTranslateKey(Key key)` Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this key factory.

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

Constructor Detail

### KeyFactorySpi

    public KeyFactorySpi()

Method Detail

### engineGeneratePublic

    protected abstract PublicKey engineGeneratePublic(KeySpec keySpec)
                                               throws InvalidKeySpecException

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

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

### engineGeneratePrivate

    protected abstract PrivateKey engineGeneratePrivate(KeySpec keySpec)
                                                 throws InvalidKeySpecException

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

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

### engineGetKeySpec

    protected abstract <T extends KeySpec> T engineGetKeySpec(Key key,
                                                              Class<T> keySpec)
                                                   throws InvalidKeySpecException

  Returns a specification (key material) of the given key object. `keySpec` identifies the specification class in which the key material should be returned. It could, for example, be `DSAPublicKeySpec.class`, to indicate that the key material should be returned in an instance of the `DSAPublicKeySpec` class.

  Parameters:
    `key` - the key.
    `keySpec` - the specification class in which the key material should be returned.
  Returns:
    the underlying key specification (key material) in an instance of the requested specification class.
  Throws:
    `InvalidKeySpecException` - if the requested key specification is inappropriate for the given key, or the given key cannot be dealt with (e.g., the given key has an unrecognized format).

### engineTranslateKey

    protected abstract Key engineTranslateKey(Key key)
                                       throws InvalidKeyException

  Translates a key object, whose provider may be unknown or potentially untrusted, into a corresponding key object of this 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 key factory.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Java™ Platform Standard Ed. 6
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 SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.