01: package org.bouncycastle.openpgp;
02:
03: import java.security.KeyPair;
04: import java.security.NoSuchProviderException;
05: import java.security.PrivateKey;
06: import java.security.PublicKey;
07: import java.util.Date;
08:
09: /**
10: * General class to handle JCA key pairs and convert them into OpenPGP ones.
11: * <p>
12: * A word for the unwary, the KeyID for a OpenPGP public key is calculated from
13: * a hash that includes the time of creation, if you pass a different date to the
14: * constructor below with the same public private key pair the KeyID will not be the
15: * same as for previous generations of the key, so ideally you only want to do
16: * this once.
17: */
18: public class PGPKeyPair {
19: PGPPublicKey pub;
20: PGPPrivateKey priv;
21:
22: public PGPKeyPair(int algorithm, KeyPair keyPair, Date time,
23: String provider) throws PGPException,
24: NoSuchProviderException {
25: this (algorithm, keyPair.getPublic(), keyPair.getPrivate(),
26: time, provider);
27: }
28:
29: public PGPKeyPair(int algorithm, PublicKey pubKey,
30: PrivateKey privKey, Date time, String provider)
31: throws PGPException, NoSuchProviderException {
32: this .pub = new PGPPublicKey(algorithm, pubKey, time, provider);
33: this .priv = new PGPPrivateKey(privKey, pub.getKeyID());
34: }
35:
36: /**
37: * Create a key pair from a PGPPrivateKey and a PGPPublicKey.
38: *
39: * @param pub the public key
40: * @param priv the private key
41: */
42: public PGPKeyPair(PGPPublicKey pub, PGPPrivateKey priv) {
43: this .pub = pub;
44: this .priv = priv;
45: }
46:
47: /**
48: * Return the keyID associated with this key pair.
49: *
50: * @return keyID
51: */
52: public long getKeyID() {
53: return pub.getKeyID();
54: }
55:
56: public PGPPublicKey getPublicKey() {
57: return pub;
58: }
59:
60: public PGPPrivateKey getPrivateKey() {
61: return priv;
62: }
63: }
|