PGPPublicKey
Date: 2016-06-23

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, 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 and 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

    Methods
    Modifier and Type | Method and 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, 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.
    `static PGPPublicKey` | `addCertification(PGPPublicKey key, java.lang.String id, PGPSignature certification)` Add a certification for an id to the given public key.
    `void` | `encode(java.io.OutputStream outStream)`
    `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[]` | `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` | `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` | `getSignaturesForID(byte[] rawID)` Return any signatures associated with the passed in id.
    `java.util.Iterator` | `getSignaturesForID(java.lang.String id)` Return any signatures associated with the passed in id.
    `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` | `getUserAttributes()` Return any user attribute vectors associated with the key.
    `java.util.Iterator` | `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 is 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, 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.
    `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.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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 is 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 getUserIDs()

      Return any userIDs associated with the key.
      Returns:
        an iterator of Strings.

    - #### getRawUserIDs

          public java.util.Iterator 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 getUserAttributes()

      Return any user attribute vectors associated with the key.
      Returns:
        an iterator of PGPUserAttributeSubpacketVector objects.

    - #### getSignaturesForID

          public java.util.Iterator 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 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.

    - #### 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`

    - #### encode

          public void encode(java.io.OutputStream outStream)
                      throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### 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.