mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
gpg: Don't check for ambiguous keys.
* g10/gpg.c (struct result): Move from here... * g10/keydb.h (struct pubkey): ... to here. Update users. * g10/gpg.c (check_user_ids): Move from here... * g10/getkey.c (get_pubkeys): ... to here. Update users. Use get_pubkey_byname to look up the keys (this also prunes invalid keys). (pubkey_free): New function. (pubkeys_free): New function. * g10/gpg.c (main): Don't check for ambiguous key specifications. -- Signed-off-by: Neal H. Walfield <neal@g10code.com> Regression-due-to:e8c53fc
This change not only moves the checks for ambiguous key specifications from gpg.c to getkey.c, it also disables the checks. The old code was too divorced from the actual key lookups and, as such, it reproduced the logic. Unfortunately, the reproduction was a poor one: despite fixing some inconsistencies (e.g.,10cca02
), it still didn't deal with group expansion or the auto key lookup functionality. Given the amount of instability introduced by this change, we (Neal & Werner) decided it is better to defer introducing this functionality until 2.3.
This commit is contained in:
parent
dc52995d85
commit
7195b94345
6 changed files with 316 additions and 512 deletions
23
g10/keydb.h
23
g10/keydb.h
|
@ -485,6 +485,29 @@ int get_pubkey_fast ( PKT_public_key *pk, u32 *keyid );
|
|||
using merge_selfsigs. */
|
||||
KBNODE get_pubkeyblock( u32 *keyid );
|
||||
|
||||
/* A list used by get_pubkeys to gather all of the matches. */
|
||||
struct pubkey
|
||||
{
|
||||
struct pubkey *next;
|
||||
/* The key to use (either the public key or the subkey). */
|
||||
PKT_public_key *pk;
|
||||
kbnode_t keyblock;
|
||||
};
|
||||
|
||||
/* Free a single key. This does not remove key from any list! */
|
||||
void pubkey_free (struct pubkey *key);
|
||||
|
||||
/* Free a list of public keys. */
|
||||
void pubkeys_free (struct pubkey *keys);
|
||||
|
||||
/* Returns all keys that match the search specfication SEARCH_TERMS.
|
||||
The returned keys should be freed using pubkeys_free. */
|
||||
gpg_error_t
|
||||
get_pubkeys (ctrl_t ctrl,
|
||||
char *search_terms, int use, int include_unusable, char *source,
|
||||
int warn_possibly_ambiguous,
|
||||
struct pubkey **keys);
|
||||
|
||||
/* Find a public key identified by the name NAME.
|
||||
|
||||
If name appears to be a valid valid RFC822 mailbox (i.e., email
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue