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);
@author Jan Luehe
@version 1.35, 04/21/06
@see Key
@see PublicKey
@see PrivateKey
@see java.security.spec.KeySpec
@see java.security.spec.DSAPublicKeySpec
@see java.security.spec.X509EncodedKeySpec
@since 1.2