Package org.bouncycastle.openpgp
Class PGPPublicKey
- java.lang.Object
-
- org.bouncycastle.openpgp.PGPPublicKey
-
- All Implemented Interfaces:
PublicKeyAlgorithmTags
public class PGPPublicKey extends java.lang.Object implements PublicKeyAlgorithmTags
general class to handle a PGP public key object.
-
-
Field Summary
-
Fields inherited from interface org.bouncycastle.bcpg.PublicKeyAlgorithmTags
DIFFIE_HELLMAN, DSA, EC, ECDH, ECDSA, EDDSA, 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
Constructors Constructor Description PGPPublicKey(PublicKeyPacket publicKeyPacket, KeyFingerPrintCalculator fingerPrintCalculator)
Create a PGP public key from a packet descriptor using the passed in fingerPrintCalculator to do calculate the fingerprint and keyID.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static PGPPublicKey
addCertification(PGPPublicKey key, byte[] rawID, PGPSignature certification)
Add a certification for an id to the given public key.static PGPPublicKey
addCertification(PGPPublicKey key, java.lang.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(java.io.OutputStream outStream)
void
encode(java.io.OutputStream outStream, boolean forTransfer)
Encode the key to outStream, with trust packets stripped out if forTransfer is true.int
getAlgorithm()
Return the algorithm code associated with the public key.int
getBitStrength()
Return the strength of the key in bits.java.util.Date
getCreationTime()
byte[]
getEncoded()
byte[]
getEncoded(boolean forTransfer)
Return an encoding of the key, with trust packets stripped out if forTransfer is true.byte[]
getFingerprint()
Return the fingerprint of the key.long
getKeyID()
Return the keyID associated with the public key.java.util.Iterator
getKeySignatures()
Return all signatures/certifications directly associated with this key (ie, not to a user id).PublicKeyPacket
getPublicKeyPacket()
java.util.Iterator<byte[]>
getRawUserIDs()
Return any userIDs associated with the key in raw byte form.java.util.Iterator
getSignatures()
Return all signatures/certifications associated with this key.java.util.Iterator<PGPSignature>
getSignaturesForID(byte[] rawID)
Return any signatures associated with the passed in id.java.util.Iterator<PGPSignature>
getSignaturesForID(java.lang.String id)
Return any signatures associated with the passed in id.java.util.Iterator<PGPSignature>
getSignaturesForKeyID(long keyID)
Return any signatures associated with the passed in key identifier keyID.java.util.Iterator
getSignaturesForUserAttribute(PGPUserAttributeSubpacketVector userAttributes)
Return an iterator of signatures associated with the passed in user attributes.java.util.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.java.util.Iterator<PGPUserAttributeSubpacketVector>
getUserAttributes()
Return any user attribute vectors associated with the key.java.util.Iterator<java.lang.String>
getUserIDs()
Return any userIDs associated with the key.int
getValidDays()
Deprecated.use getValidSeconds(): greater than version 3 keys may be valid for less than a day.long
getValidSeconds()
int
getVersion()
boolean
hasRevocation()
Check whether this (sub)key has a revocation signature on it.boolean
isEncryptionKey()
Return true if this key has an algorithm type that makes it suitable to use for encryption.boolean
isMasterKey()
Return true if this could be a master key.boolean
isRevoked()
Deprecated.this method is poorly named, use hasRevocation().static PGPPublicKey
removeCertification(PGPPublicKey key, byte[] rawID)
Remove any certifications associated with a given id on a key.static PGPPublicKey
removeCertification(PGPPublicKey key, byte[] id, PGPSignature certification)
Remove a certification associated with a given id on a key.static PGPPublicKey
removeCertification(PGPPublicKey key, java.lang.String id)
Remove any certifications associated with a given id on a key.static PGPPublicKey
removeCertification(PGPPublicKey key, java.lang.String id, PGPSignature certification)
Remove a certification associated with a given id on a key.static PGPPublicKey
removeCertification(PGPPublicKey key, PGPSignature certification)
Remove a certification from the key.static PGPPublicKey
removeCertification(PGPPublicKey key, PGPUserAttributeSubpacketVector userAttributes)
Remove any certifications associated with a given user attribute subpacket on a key.static PGPPublicKey
removeCertification(PGPPublicKey key, PGPUserAttributeSubpacketVector userAttributes, PGPSignature certification)
Remove a certification associated with a given user attributes on a key.
-
-
-
Constructor Detail
-
PGPPublicKey
public PGPPublicKey(PublicKeyPacket publicKeyPacket, KeyFingerPrintCalculator fingerPrintCalculator) throws PGPException
Create a PGP public key from a packet descriptor using the passed in fingerPrintCalculator to do calculate the fingerprint and keyID.- Parameters:
publicKeyPacket
- packet describing the public key.fingerPrintCalculator
- calculator providing the digest support ot create the key fingerprint.- Throws:
PGPException
- if the packet is faulty, or the required calculations fail.
-
-
Method Detail
-
getVersion
public int getVersion()
- Returns:
- the version of this key.
-
getCreationTime
public java.util.Date getCreationTime()
- Returns:
- creation time of key.
-
getValidDays
public int getValidDays()
Deprecated.use getValidSeconds(): greater than version 3 keys may be valid for less than a day.- Returns:
- number of valid days from creation time - zero means no expiry.
-
getTrustData
public byte[] getTrustData()
Return the trust data associated with the public key, if present.- Returns:
- a byte array with trust data, null otherwise.
-
getValidSeconds
public long getValidSeconds()
- Returns:
- number of valid seconds from creation time - zero means no expiry.
-
getKeyID
public long getKeyID()
Return the keyID associated with the public key.- Returns:
- long
-
getFingerprint
public byte[] getFingerprint()
Return the fingerprint of the key.- Returns:
- key fingerprint.
-
isEncryptionKey
public boolean isEncryptionKey()
Return true if this key has an algorithm type that makes it suitable to use for encryption.Note: with version 4 keys KeyFlags subpackets should also be considered when present for determining the preferred use of the key.
- Returns:
- true if the key algorithm is suitable for encryption.
-
isMasterKey
public boolean isMasterKey()
Return true if this could be a master key.- Returns:
- true if a master key.
-
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 strength of key.
-
getUserIDs
public java.util.Iterator<java.lang.String> getUserIDs()
Return any userIDs associated with the key.- Returns:
- an iterator of Strings.
-
getRawUserIDs
public java.util.Iterator<byte[]> getRawUserIDs()
Return any userIDs associated with the key in raw byte form. No attempt is made to convert the IDs into Strings.- Returns:
- an iterator of Strings.
-
getUserAttributes
public java.util.Iterator<PGPUserAttributeSubpacketVector> getUserAttributes()
Return any user attribute vectors associated with the key.- Returns:
- an iterator of PGPUserAttributeSubpacketVector objects.
-
getSignaturesForID
public java.util.Iterator<PGPSignature> getSignaturesForID(java.lang.String id)
Return any signatures associated with the passed in id.- Parameters:
id
- the id to be matched.- Returns:
- an iterator of PGPSignature objects.
-
getSignaturesForID
public java.util.Iterator<PGPSignature> getSignaturesForID(byte[] rawID)
Return any signatures associated with the passed in id.- Parameters:
rawID
- the id to be matched in raw byte form.- Returns:
- an iterator of PGPSignature objects.
-
getSignaturesForKeyID
public java.util.Iterator<PGPSignature> getSignaturesForKeyID(long keyID)
Return any signatures associated with the passed in key identifier keyID.- Parameters:
keyID
- the key id to be matched.- Returns:
- an iterator of PGPSignature objects issued by the key with keyID.
-
getSignaturesForUserAttribute
public java.util.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 java.util.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.
-
getSignatures
public java.util.Iterator getSignatures()
Return all signatures/certifications associated with this key.- Returns:
- an iterator (possibly empty) with all signatures/certifications.
-
getKeySignatures
public java.util.Iterator getKeySignatures()
Return all signatures/certifications directly associated with this key (ie, not to a user id).- Returns:
- an iterator (possibly empty) with all signatures/certifications.
-
getPublicKeyPacket
public PublicKeyPacket getPublicKeyPacket()
-
getEncoded
public byte[] getEncoded() throws java.io.IOException
- Throws:
java.io.IOException
-
getEncoded
public byte[] getEncoded(boolean forTransfer) throws java.io.IOException
Return an encoding of the key, with trust packets stripped out if forTransfer is true.- Parameters:
forTransfer
- if the purpose of encoding is to send key to other users.- Returns:
- a encoded byte array representing the key.
- Throws:
java.io.IOException
- in case of encoding error.
-
encode
public void encode(java.io.OutputStream outStream) throws java.io.IOException
- Throws:
java.io.IOException
-
encode
public void encode(java.io.OutputStream outStream, boolean forTransfer) throws java.io.IOException
Encode the key to outStream, with trust packets stripped out if forTransfer is true.- Parameters:
outStream
- stream to write the key encoding to.forTransfer
- if the purpose of encoding is to send key to other users.- Throws:
java.io.IOException
- in case of encoding error.
-
isRevoked
public boolean isRevoked()
Deprecated.this method is poorly named, use hasRevocation().Check whether this (sub)key has a revocation signature on it.- Returns:
- boolean indicating whether this (sub)key has been revoked.
-
hasRevocation
public boolean hasRevocation()
Check whether this (sub)key has a revocation signature on it.- Returns:
- boolean indicating whether this (sub)key has had a (possibly invalid) revocation attached..
-
addCertification
public static PGPPublicKey addCertification(PGPPublicKey key, byte[] rawID, PGPSignature certification)
Add a certification for an id to the given public key.- Parameters:
key
- the key the certification is to be added to.rawID
- the raw bytes making up the user id..certification
- the new certification.- Returns:
- the re-certified key.
-
addCertification
public static PGPPublicKey addCertification(PGPPublicKey key, java.lang.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, 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.
-
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.
-
removeCertification
public static PGPPublicKey removeCertification(PGPPublicKey key, java.lang.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, byte[] rawID)
Remove any certifications associated with a given id on a key.- Parameters:
key
- the key the certifications are to be removed from.rawID
- the id that is to be removed in raw byte form.- Returns:
- the re-certified key, null if the id was not found on the key.
-
removeCertification
public static PGPPublicKey removeCertification(PGPPublicKey key, byte[] id, PGPSignature certification)
Remove a certification associated with a given id on a key.- Parameters:
key
- the key the certifications are to be removed from.id
- the id that the certification is to be removed from (in its raw byte form)certification
- the certification to be removed.- Returns:
- the re-certified key, null if the certification was not found.
-
removeCertification
public static PGPPublicKey removeCertification(PGPPublicKey key, java.lang.String id, PGPSignature certification)
Remove a certification associated with a given id on a key.- Parameters:
key
- the key the certifications are to be removed from.id
- the id that the certification is to be removed from.certification
- the certification to be removed.- Returns:
- the re-certified key, null if the certification was not found.
-
removeCertification
public static PGPPublicKey removeCertification(PGPPublicKey key, PGPUserAttributeSubpacketVector userAttributes, PGPSignature certification)
Remove a certification associated with a given user attributes on a key.- Parameters:
key
- the key the certifications are to be removed from.userAttributes
- the user attributes that the certification is to be removed from.certification
- the certification to be removed.- Returns:
- the re-certified key, null if the certification was not found.
-
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.
-
removeCertification
public static PGPPublicKey removeCertification(PGPPublicKey key, PGPSignature certification)
Remove a certification from the key.- Parameters:
key
- the key the certifications are to be removed from.certification
- the certification to be removed.- Returns:
- the modified key, null if the certification was not found.
-
-