java.security
Class KeyFactory
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.
The following is an example of how to use a key factory in order to
instantiate a
DSA public key from its encoding. Assume Alice has
received a digital signature from Bob. Bob also sent her his public key (in
encoded format) to verify his signature. Alice then performs the following
actions:
X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);
Signature sig = Signature.getInstance("DSA");
sig.initVerify(bobPubKey);
sig.update(data);
sig.verify(signature);
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
KeyFactory
protected KeyFactory(KeyFactorySpi keyFacSpi,
Provider provider,
String algorithm)
Creates a KeyFactory
object.
keyFacSpi
- the delegate.provider
- the provider.algorithm
- the name of the algorithm to associate with this
KeyFactory
.
getAlgorithm
public final String getAlgorithm()
Gets the name of the algorithm associated with this KeyFactory
.
- the name of the algorithm associated with this
KeyFactory
.
getInstance
public static KeyFactory getInstance(String algorithm)
throws NoSuchAlgorithmException
Generates a KeyFactory
object that implements the specified
algorithm. If the default provider package provides an implementation of
the requested algorithm, an instance of KeyFactory
containing
that implementation is returned. If the algorithm is not available in the
default package, other packages are searched.
algorithm
- the name of the requested key algorithm. See Appendix A
in the Java Cryptography Architecture API Specification & Reference
for information about standard algorithm names.
- a
KeyFactory
object for the specified algorithm.
NoSuchAlgorithmException
- if the requested algorithm is not
available in the default provider package or any of the other provider
packages that were searched.
getInstance
public static KeyFactory getInstance(String algorithm,
String provider)
throws NoSuchAlgorithmException,
NoSuchProviderException
Generates a KeyFactory
object for the specified algorithm
from the specified provider.
algorithm
- the name of the requested key algorithm. See Appendix A
in the Java Cryptography Architecture API Specification & Reference
for information about standard algorithm names.provider
- the name of the provider.
- a
KeyFactory
object for the specified algorithm.
getInstance
public static KeyFactory getInstance(String algorithm,
Provider provider)
throws NoSuchAlgorithmException
Generates a KeyFactory
object for the specified algorithm from
the specified provider. Note: the provider
doesn't have to be
registered.
algorithm
- the name of the requested key algorithm. See Appendix A
in the Java Cryptography Architecture API Specification & Reference for
information about standard algorithm names.provider
- the provider.
- a
KeyFactory
object for the specified algorithm.
getKeySpec
public final KeySpec getKeySpec(Key key,
Class 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.
key
- the key.keySpec
- the specification class in which the key material should be
returned.
- the underlying key specification (key material) in an instance of
the requested specification class.
InvalidKeySpecException
- if the requested key specification is
inappropriate for the given key, or the given key cannot be processed
(e.g., the given key has an unrecognized algorithm or format).
getProvider
public final Provider getProvider()
Returns the provider of this key factory object.
- the provider of this key factory object.
translateKey
public final Key translateKey(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.
key
- the key whose provider is unknown or untrusted.
KeyFactory.java --- Key Factory Class
Copyright (C) 1999, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.