diff options
author | Werner Koch <[email protected]> | 2024-01-02 09:13:16 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2024-01-02 09:19:57 +0000 |
commit | 4c04143d81370d1a1e6006fada1057461b3d3184 (patch) | |
tree | 63c9639541df470dac8a3fcee96cde441b7050eb /g10/call-agent.c | |
parent | gpg: Don't call keybox_compress when KEYDB_RESOURCE_FLAG_READONLY. (diff) | |
download | gnupg-4c04143d81370d1a1e6006fada1057461b3d3184.tar.gz gnupg-4c04143d81370d1a1e6006fada1057461b3d3184.zip |
gpg: Choose key from inserted card over a non-inserted card
* g10/call-agent.c (agent_probe_secret_key): Do not return an error
but 0.
* g10/getkey.c (finish_lookup): Improve the selection of secret keys.
--
GnuPG-bug-id: 6831
Diffstat (limited to 'g10/call-agent.c')
-rw-r--r-- | g10/call-agent.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/g10/call-agent.c b/g10/call-agent.c index c90cdfda5..744c0fcb8 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -2226,7 +2226,14 @@ keyinfo_status_cb (void *opaque, const char *line) /* Ask the agent whether a secret key for the given public key is - available. Returns 0 if not available. Bigger value is preferred. */ + * available. Returns 0 if not available. Bigger value is preferred. + * Will never return a value less than 0. Defined return values are: + * 0 := No key or error + * 1 := Key available + * 2 := Key available on a smartcard + * 3 := Key available and passphrase cached + * 4 := Key available on current smartcard + */ int agent_probe_secret_key (ctrl_t ctrl, PKT_public_key *pk) { @@ -2240,11 +2247,11 @@ agent_probe_secret_key (ctrl_t ctrl, PKT_public_key *pk) err = start_agent (ctrl, 0); if (err) - return err; + return 0; err = hexkeygrip_from_pk (pk, &hexgrip); if (err) - return err; + return 0; snprintf (line, sizeof line, "KEYINFO %s", hexgrip); xfree (hexgrip); |