diff options
Diffstat (limited to 'gpgme/keylist.c')
-rw-r--r-- | gpgme/keylist.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gpgme/keylist.c b/gpgme/keylist.c index 6bd6833f..c47f3865 100644 --- a/gpgme/keylist.c +++ b/gpgme/keylist.c @@ -832,6 +832,7 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key, { gpgme_ctx_t listctx; gpgme_error_t err; + gpgme_key_t key; if (!ctx || !r_key) return gpg_error (GPG_ERR_INV_VALUE); @@ -849,6 +850,21 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key, err = gpgme_op_keylist_start (listctx, fpr, secret); if (!err) err = gpgme_op_keylist_next (listctx, r_key); + if (!err) + { + err = gpgme_op_keylist_next (listctx, &key); + if (gpgme_err_code (err) == GPG_ERR_EOF) + err = gpg_error (GPG_ERR_NO_ERROR); + else + { + if (!err) + { + gpgme_key_unref (key); + err = gpg_error (GPG_ERR_AMBIGUOUS_NAME); + } + gpgme_key_unref (*r_key); + } + } gpgme_release (listctx); return err; } |