org.bouncycastle.openpgp

Class PGPPublicKey

Implemented Interfaces:
PublicKeyAlgorithmTags

public class PGPPublicKey
extends java.lang.Object
implements PublicKeyAlgorithmTags

general class to handle a PGP public key object.

Fields inherited from interface org.bouncycastle.bcpg.PublicKeyAlgorithmTags

DIFFIE_HELLMAN, DSA, EC, ECDSA, ELGAMAL_ENCRYPT, ELGAMAL_GENERAL, EXPERIMENTAL_1, EXPERIMENTAL_10, EXPERIMENTAL_11, EXPERIMENTAL_2, EXPERIMENTAL_3, EXPERIMENTAL_4, EXPERIMENTAL_5, EXPERIMENTAL_6, EXPERIMENTAL_7, EXPERIMENTAL_8, EXPERIMENTAL_9, RSA_ENCRYPT, RSA_GENERAL, RSA_SIGN

Constructor Summary

PGPPublicKey(int algorithm, PublicKey pubKey, Date time, String provider)
Create a PGPPublicKey from the passed in JCA one.

Method Summary

static PGPPublicKey
addCertification(PGPPublicKey key, String id, PGPSignature certification)
Add a certification for an id to the given public key.
static PGPPublicKey
addCertification(PGPPublicKey key, PGPSignature certification)
Add a revocation or some other key certification to a key.
static PGPPublicKey
addCertification(PGPPublicKey key, PGPUserAttributeSubpacketVector userAttributes, PGPSignature certification)
Add a certification for the given UserAttributeSubpackets to the given public key.
void
encode(OutputStream outStream)
int
getAlgorithm()
Return the algorithm code associated with the public key.
int
getBitStrength()
Return the strength of the key in bits.
Date
getCreationTime()
byte[]
getEncoded()
byte[]
getFingerprint()
Return the fingerprint of the key.
PublicKey
getKey(String provider)
Return the public key contained in the object.
long
getKeyID()
Return the keyID associated with the public key.
Iterator
getSignatures()
Return all signatures/certifications associated with this key.
Iterator
getSignaturesForID(String id)
Return any signatures associated with the passed in id.
Iterator
getSignaturesForUserAttribute(PGPUserAttributeSubpacketVector userAttributes)
Return an iterator of signatures associated with the passed in user attributes.
Iterator
getSignaturesOfType(int signatureType)
Return signatures of the passed in type that are on this key.
byte[]
getTrustData()
Return the trust data associated with the public key, if present.
Iterator
getUserAttributes()
Return any user attribute vectors associated with the key.
Iterator
getUserIDs()
Return any userIDs associated with the key.
int
getValidDays()
long
getValidSeconds()
int
getVersion()
boolean
isEncryptionKey()
Return true if this key is marked as suitable for using for encryption.
boolean
isMasterKey()
Return true if this is a master key.
boolean
isRevoked()
Check whether this (sub)key has a revocation signature on it.
static PGPPublicKey
removeCertification(PGPPublicKey key, String id)
Remove any certifications associated with a given id on a key.
static PGPPublicKey
removeCertification(PGPPublicKey key, String id, PGPSignature certification)
Remove any certifications associated with a given id on a key.
static PGPPublicKey
removeCertification(PGPPublicKey key, PGPUserAttributeSubpacketVector userAttributes)
Remove any certifications associated with a given user attribute subpacket on a key.

Constructor Details

PGPPublicKey

public PGPPublicKey(int algorithm,
                    PublicKey pubKey,
                    Date time,
                    String provider)
            throws PGPException,
                   NoSuchProviderException
Create a PGPPublicKey from the passed in JCA one.

Note: the time passed in affects the value of the key's keyID, so you probably only want to do this once for a JCA key, or make sure you keep track of the time you used.

Parameters:
algorithm - asymmetric algorithm type representing the public key.
pubKey - actual public key to associate.
time - date of creation.
provider - provider to use for underlying digest calculations.
Throws:
PGPException - on key creation problem.

Method Details

addCertification

public static PGPPublicKey addCertification(PGPPublicKey key,
                                            String id,
                                            PGPSignature certification)
Add a certification for an id to the given public key.
Parameters:
key - the key the certification is to be added to.
id - the id the certification is associated with.
certification - the new certification.
Returns:
the re-certified key.

addCertification

public static PGPPublicKey addCertification(PGPPublicKey key,
                                            PGPSignature certification)
Add a revocation or some other key certification to a key.
Parameters:
key - the key the revocation is to be added to.
certification - the key signature to be added.
Returns:
the new changed public key object.

addCertification

public static PGPPublicKey addCertification(PGPPublicKey key,
                                            PGPUserAttributeSubpacketVector userAttributes,
                                            PGPSignature certification)
Add a certification for the given UserAttributeSubpackets to the given public key.
Parameters:
key - the key the certification is to be added to.
userAttributes - the attributes the certification is associated with.
certification - the new certification.
Returns:
the re-certified key.

encode

public void encode(OutputStream outStream)
            throws IOException

getAlgorithm

public int getAlgorithm()
Return the algorithm code associated with the public key.
Returns:
int

getBitStrength

public int getBitStrength()
Return the strength of the key in bits.
Returns:
bit strenght of key.

getCreationTime

public Date getCreationTime()
Returns:
creation time of key.

getEncoded

public byte[] getEncoded()
            throws IOException

getFingerprint

public byte[] getFingerprint()
Return the fingerprint of the key.
Returns:
key fingerprint.

getKey

public PublicKey getKey(String provider)
            throws PGPException,
                   NoSuchProviderException
Return the public key contained in the object.
Parameters:
provider - provider to construct the key for.
Returns:
a JCE/JCA public key.
Throws:
PGPException - if the key algorithm is not recognised.

getKeyID

public long getKeyID()
Return the keyID associated with the public key.
Returns:
long

getSignatures

public Iterator getSignatures()
Return all signatures/certifications associated with this key.
Returns:
an iterator (possibly empty) with all signatures/certifications.

getSignaturesForID

public Iterator getSignaturesForID(String id)
Return any signatures associated with the passed in id.
Parameters:
id - the id to be matched.
Returns:
an iterator of PGPSignature objects.

getSignaturesForUserAttribute

public Iterator getSignaturesForUserAttribute(PGPUserAttributeSubpacketVector userAttributes)
Return an iterator of signatures associated with the passed in user attributes.
Parameters:
userAttributes - the vector of user attributes to be matched.
Returns:
an iterator of PGPSignature objects.

getSignaturesOfType

public Iterator getSignaturesOfType(int signatureType)
Return signatures of the passed in type that are on this key.
Parameters:
signatureType - the type of the signature to be returned.
Returns:
an iterator (possibly empty) of signatures of the given type.

getTrustData

public byte[] getTrustData()
Return the trust data associated with the public key, if present.
Returns:
a byte array with trust data, null otherwise.

getUserAttributes

public Iterator getUserAttributes()
Return any user attribute vectors associated with the key.
Returns:
an iterator of PGPUserAttributeSubpacketVector objects.

getUserIDs

public Iterator getUserIDs()
Return any userIDs associated with the key.
Returns:
an iterator of Strings.

getValidDays

public int getValidDays()
Returns:
number of valid days from creation time - zero means no expiry.

getValidSeconds

public long getValidSeconds()
Returns:
number of valid seconds from creation time - zero means no expiry.

getVersion

public int getVersion()
Returns:
the version of this key.

isEncryptionKey

public boolean isEncryptionKey()
Return true if this key is marked as suitable for using for encryption.
Returns:
true if this key is marked as suitable for using for encryption.

isMasterKey

public boolean isMasterKey()
Return true if this is a master key.
Returns:
true if a master key.

isRevoked

public boolean isRevoked()
Check whether this (sub)key has a revocation signature on it.
Returns:
boolean indicating whether this (sub)key has been revoked.

removeCertification

public static PGPPublicKey removeCertification(PGPPublicKey key,
                                               String id)
Remove any certifications associated with a given id on a key.
Parameters:
key - the key the certifications are to be removed from.
id - the id that is to be removed.
Returns:
the re-certified key, null if the id was not found on the key.

removeCertification

public static PGPPublicKey removeCertification(PGPPublicKey key,
                                               String id,
                                               PGPSignature certification)
Remove any certifications associated with a given id on a key.
Parameters:
key - the key the certifications are to be removed from.
id - the id that the certfication is to be removed from.
certification - the certfication to be removed.
Returns:
the re-certified key, null if the certification was not found.

removeCertification

public static PGPPublicKey removeCertification(PGPPublicKey key,
                                               PGPUserAttributeSubpacketVector userAttributes)
Remove any certifications associated with a given user attribute subpacket on a key.
Parameters:
key - the key the certifications are to be removed from.
userAttributes - the attributes to be removed.
Returns:
the re-certified key, null if the user attribute subpacket was not found on the key.