org.bouncycastle.openpgp.PGPKeyPair Maven / Gradle / Ivy
package org.bouncycastle.openpgp;
import java.security.KeyPair;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Date;
/**
* General class to handle JCA key pairs and convert them into OpenPGP ones.
*
* A word for the unwary, the KeyID for a OpenPGP public key is calculated from
* a hash that includes the time of creation, if you pass a different date to the
* constructor below with the same public private key pair the KeyID will not be the
* same as for previous generations of the key, so ideally you only want to do
* this once.
*/
public class PGPKeyPair
{
PGPPublicKey pub;
PGPPrivateKey priv;
/**
* @deprecated use version without provider.
*/
public PGPKeyPair(
int algorithm,
KeyPair keyPair,
Date time,
String provider)
throws PGPException, NoSuchProviderException
{
this(algorithm, keyPair.getPublic(), keyPair.getPrivate(), time, provider);
}
public PGPKeyPair(
int algorithm,
KeyPair keyPair,
Date time)
throws PGPException
{
this(algorithm, keyPair.getPublic(), keyPair.getPrivate(), time);
}
/**
* @deprecated use version without provider.
*/
public PGPKeyPair(
int algorithm,
PublicKey pubKey,
PrivateKey privKey,
Date time,
String provider)
throws PGPException, NoSuchProviderException
{
this(algorithm, pubKey, privKey, time);
}
public PGPKeyPair(
int algorithm,
PublicKey pubKey,
PrivateKey privKey,
Date time)
throws PGPException
{
this.pub = new PGPPublicKey(algorithm, pubKey, time);
this.priv = new PGPPrivateKey(privKey, pub.getKeyID());
}
/**
* Create a key pair from a PGPPrivateKey and a PGPPublicKey.
*
* @param pub the public key
* @param priv the private key
*/
public PGPKeyPair(
PGPPublicKey pub,
PGPPrivateKey priv)
{
this.pub = pub;
this.priv = priv;
}
/**
* Return the keyID associated with this key pair.
*
* @return keyID
*/
public long getKeyID()
{
return pub.getKeyID();
}
public PGPPublicKey getPublicKey()
{
return pub;
}
public PGPPrivateKey getPrivateKey()
{
return priv;
}
}