Diffusion GnuPG ab89164be020

g10: Improve and unify key selection for -r and --locate-keys.

Authored by justus on Oct 27 2016, 6:48 PM.

Description

g10: Improve and unify key selection for -r and --locate-keys.

* g10/getkey.c (struct pubkey_cmp_cookie): New type.
(key_is_ok, uid_is_ok, subkey_is_ok): New functions.
(pubkey_cmp): Likewise.
(get_best_pubkey_byname): Likewise.
* g10/keydb.h (get_best_pubkey_byname): New prototype.
* g10/keylist.c (locate_one): Use the new function.
* g10/pkclist.c (find_and_check_key): Likewise.
* tests/openpgp/Makefile.am (XTESTS): Add new test.
(TEST_FILES): Add new files.
* tests/openpgp/key-selection.scm: New file.
* tests/openpgp/key-selection/0.asc: Likewise.
* tests/openpgp/key-selection/1.asc: Likewise.
* tests/openpgp/key-selection/2.asc: Likewise.
* tests/openpgp/key-selection/3.asc: Likewise.
* tests/openpgp/key-selection/4.asc: Likewise.

When a name resembling a mail address is given to either --locate-keys
or --recipient, rank the search results and use only the most relevant
key.

This also lets us query which key will be used for encryption using
--locate-keys. However, note that --locate-keys may also return keys
incapable of encryption, though it will prefer keys that have an
encryption subkey.

  • GnuPG-bug-id: T2359
  • Signed-off-by: Justus Winter <justus@g10code.com>

Details

Committed
justusNov 3 2016, 3:04 PM
Parents
rG1ec07cbc209f: gpgscm,tests: Add new functions to the test environment.
Branches
Unknown
Tags
Unknown
Justus Winter <justus@g10code.com> committed rGab89164be020: g10: Improve and unify key selection for -r and --locate-keys. (authored by Justus Winter <justus@g10code.com>).Nov 3 2016, 3:04 PM
justus mentioned this in Unknown Object (Maniphest Task).Mar 27 2017, 5:10 PM
justus mentioned this in Unknown Object (Maniphest Task).Mar 27 2017, 5:33 PM