mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
g10: Select a secret key by checking availability under gpg-agent.
* g10/getkey.c (finish_lookup): Add WANT_SECRET argument to confirm by agent_probe_secret_key. (get_pubkey_fromfile, lookup): Supply WANT_SECRET argument. -- GnuPG-bug-id: 1967 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
9f5e50e7c8
commit
0a76611294
15
g10/getkey.c
15
g10/getkey.c
@ -144,7 +144,7 @@ static int lookup (ctrl_t ctrl, getkey_ctx_t ctx, int want_secret,
|
||||
kbnode_t *ret_keyblock, kbnode_t *ret_found_key);
|
||||
static kbnode_t finish_lookup (kbnode_t keyblock,
|
||||
unsigned int req_usage, int want_exact,
|
||||
unsigned int *r_flags);
|
||||
int want_secret, unsigned int *r_flags);
|
||||
static void print_status_key_considered (kbnode_t keyblock, unsigned int flags);
|
||||
|
||||
|
||||
@ -1734,7 +1734,7 @@ get_pubkey_fromfile (ctrl_t ctrl, PKT_public_key *pk, const char *fname)
|
||||
/* Warning: node flag bits 0 and 1 should be preserved by
|
||||
* merge_selfsigs. FIXME: Check whether this still holds. */
|
||||
merge_selfsigs (ctrl, keyblock);
|
||||
found_key = finish_lookup (keyblock, pk->req_usage, 0, &infoflags);
|
||||
found_key = finish_lookup (keyblock, pk->req_usage, 0, 0, &infoflags);
|
||||
print_status_key_considered (keyblock, infoflags);
|
||||
if (found_key)
|
||||
pk_from_block (pk, keyblock, found_key);
|
||||
@ -3428,7 +3428,7 @@ merge_selfsigs (ctrl_t ctrl, kbnode_t keyblock)
|
||||
*/
|
||||
static kbnode_t
|
||||
finish_lookup (kbnode_t keyblock, unsigned int req_usage, int want_exact,
|
||||
unsigned int *r_flags)
|
||||
int want_secret, unsigned int *r_flags)
|
||||
{
|
||||
kbnode_t k;
|
||||
|
||||
@ -3570,6 +3570,13 @@ finish_lookup (kbnode_t keyblock, unsigned int req_usage, int want_exact,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (want_secret && agent_probe_secret_key (NULL, pk))
|
||||
{
|
||||
if (DBG_LOOKUP)
|
||||
log_debug ("\tno secret key\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (DBG_LOOKUP)
|
||||
log_debug ("\tsubkey might be fine\n");
|
||||
/* In case a key has a timestamp of 0 set, we make sure
|
||||
@ -3757,7 +3764,7 @@ lookup (ctrl_t ctrl, getkey_ctx_t ctx, int want_secret,
|
||||
* merge_selfsigs. */
|
||||
merge_selfsigs (ctrl, keyblock);
|
||||
found_key = finish_lookup (keyblock, ctx->req_usage, ctx->exact,
|
||||
&infoflags);
|
||||
want_secret, &infoflags);
|
||||
print_status_key_considered (keyblock, infoflags);
|
||||
if (found_key)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user