Class KeyIdentifier

java.lang.Object
org.bouncycastle.bcpg.KeyIdentifier

public class KeyIdentifier extends Object
Utility class for matching key-ids / fingerprints. A KeyIdentifier can be created from either a 64-bit key-id, a fingerprint, or both. This class was created to enable a seamless transition from use of key-ids in the API towards identifying keys via fingerprints.
  • Constructor Details

    • KeyIdentifier

      public KeyIdentifier(byte[] fingerprint)
      Create a new KeyIdentifier based on a keys fingerprint. For fingerprints matching the format of a v4, v5 or v6 key, the constructor will try to derive the corresponding key-id from the fingerprint.
      Parameters:
      fingerprint - fingerprint
    • KeyIdentifier

      public KeyIdentifier(byte[] fingerprint, long keyId)
      Create a KeyIdentifier based on the given fingerprint and key-id.
      Parameters:
      fingerprint - fingerprint
      keyId - key-id
    • KeyIdentifier

      public KeyIdentifier(long keyId)
      Create a KeyIdentifier based on the given key-id. fingerprint will be set to null.
      Parameters:
      keyId - key-id
  • Method Details

    • wildcard

      public static KeyIdentifier wildcard()
      Create a wildcard KeyIdentifier.
      Returns:
      wildcard key identifier
    • getFingerprint

      public byte[] getFingerprint()
      Return the fingerprint of the KeyIdentifier. fingerprint might be null, if the KeyIdentifier was created from just a key-id. If isWildcard() returns true, this method returns an empty, but non-null array.
      Returns:
      fingerprint
    • getKeyId

      public long getKeyId()
      Return the key-id of the KeyIdentifier. This might be 0L if isWildcard() returns true, or if an unknown fingerprint was passed in.
      Returns:
      key-id
    • isWildcard

      public boolean isWildcard()
      Returns true, if the KeyIdentifier specifies a wildcard (matches anything). This is for example used with anonymous recipient key-ids / fingerprints, where the recipient needs to try all available keys to decrypt the message.
      Returns:
      is wildcard
    • hasFingerprint

      public boolean hasFingerprint(byte[] fingerprint)
      Return true if the KeyIdentifier has a fingerprint corresponding to the passed in one.
      Parameters:
      fingerprint - the fingerprint to match against.
      Returns:
      true if there's a match, false otherwise.
    • matches

      public boolean matches(KeyIdentifier other)
      Return true, if this KeyIdentifier matches the given other KeyIdentifier. This will return true if the fingerprint matches, or if the key-id matches, or if isWildcard() returns true.
      Parameters:
      other - the identifier we are matching against.
      Returns:
      true if we match other, false otherwise.
    • isPresentIn

      public boolean isPresentIn(List<KeyIdentifier> others)
      Return true, if this KeyIdentifier is present in the given list of KeyIdentifier . This will return true if a fingerprint matches, or if a key-id matches, or if isWildcard() returns true.
      Parameters:
      others - the list of key identifiers to check.
      Returns:
      true, if the identifier is present in the list, false otherwise.
    • toString

      public String toString()
      Overrides:
      toString in class Object