public class KeyFactory extends Object
Key
) into key specifications (transparent representations of the
underlying key material).
Key factories are bi-directional. They allow a key class to be converted
into a key specification (key material) and back again. For example DSA
public keys can be specified as DSAPublicKeySpec
or
X509EncodedKeySpec
. A key factory translates these key
specifications.
Key
,
KeySpec
,
DSAPublicKeySpec
,
X509EncodedKeySpec
Modifier | Constructor and Description |
---|---|
protected |
KeyFactory(KeyFactorySpi keyFacSpi,
Provider provider,
String algorithm)
Constructs a new instance of
KeyFactory with the specified
parameters. |
Modifier and Type | Method and Description |
---|---|
PrivateKey |
generatePrivate(KeySpec keySpec)
Generates a private key from the provided key specification.
|
PublicKey |
generatePublic(KeySpec keySpec)
Generates a public key from the provided key specification.
|
String |
getAlgorithm()
Returns the name of the algorithm used.
|
static KeyFactory |
getInstance(String algorithm)
Returns a new instance of
KeyFactory representing the
specified key factory. |
static KeyFactory |
getInstance(String algorithm,
Provider provider)
Returns a new instance of
KeyFactory representing the
specified key factory from the designated Provider . |
static KeyFactory |
getInstance(String algorithm,
String provider)
Returns a new instance of
KeyFactory representing the
specified key factory from the specified provider. |
<T extends KeySpec> |
getKeySpec(Key key,
Class<T> keySpec)
Returns a key specification for the given key.
|
Provider |
getProvider()
Returns the
Provider of this instance. |
Key |
translateKey(Key key)
Translates the key from an unknown or untrusted provider into a key from
this key factory.
|
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
KeyFactory
with the specified
parameters.keyFacSpi
- the key factory to use.provider
- the provider to use.algorithm
- the name of the key algorithm to use.public static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
KeyFactory
representing the
specified key factory.algorithm
- the name of algorithm to use.NoSuchAlgorithmException
- if the algorithm is not implemented by any
provider.IllegalArgumentException
- if algorithm
is
null
or is an empty string.public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KeyFactory
representing the
specified key factory from the specified provider.algorithm
- the name of algorithm to use.provider
- the name of the provider to use.NoSuchAlgorithmException
- if the algorithm is not implemented by the
named provider.NoSuchProviderException
- if the named provider was not found.IllegalArgumentException
- if either algorithm
or
provider
is null
or empty.public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KeyFactory
representing the
specified key factory from the designated Provider
.algorithm
- the name of algorithm to use.provider
- the Provider
to use.NoSuchAlgorithmException
- if the algorithm is not implemented by
Provider
.IllegalArgumentException
- if either algorithm
or
provider
is null
, or if
algorithm
is an empty string.Provider
public final Provider getProvider()
Provider
of this instance.Provider
of this instance.public final String getAlgorithm()
public final PublicKey generatePublic(KeySpec keySpec) throws InvalidKeySpecException
keySpec
- the key specification.InvalidKeySpecException
- if the key specification is invalid.public final PrivateKey generatePrivate(KeySpec keySpec) throws InvalidKeySpecException
keySpec
- the key specification.InvalidKeySpecException
- if the key specification is invalid.public final <T extends KeySpec> T getKeySpec(Key key, Class<T> keySpec) throws InvalidKeySpecException
keySpec
identifies the specification class to return the key material in.key
- the key to use.keySpec
- the specification class to use.InvalidKeySpecException
- the requested key specification is inappropriate for this key or
the key is unrecognized.public final Key translateKey(Key key) throws InvalidKeyException
key
- the key to translate from.InvalidKeyException
- if the key cannot be processed by this key factory.