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 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);