Class KeyIdentifier


  • public class KeyIdentifier
    extends java.lang.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 Detail

      • 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 Detail

      • 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​(java.util.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 java.lang.String toString()
        Overrides:
        toString in class java.lang.Object