aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2003-07-31 16:01:13 +0000
committerMarcus Brinkmann <[email protected]>2003-07-31 16:01:13 +0000
commit82f7a68aa2027a54b8317f777c48a9c7d7e715a0 (patch)
tree785f5bb6cd39ba2323048e0d2a9de6f84e0552f0
parent2003-07-31 Marcus Brinkmann <[email protected]> (diff)
downloadgpgme-82f7a68aa2027a54b8317f777c48a9c7d7e715a0.tar.gz
gpgme-82f7a68aa2027a54b8317f777c48a9c7d7e715a0.zip
doc/
2003-07-31 Marcus Brinkmann <[email protected]> * gpgme.texi (Listing Keys): Document GPG_ERR_AMBIGUOUS_NAME for gpgme_get_key. gpgme/ 2003-07-31 Marcus Brinkmann <[email protected]> * keylist.c (gpgme_get_key): Check if there is more than one key listed, and return GPG_ERR_AMBIGUOUS_NAME in that case.
Diffstat (limited to '')
-rw-r--r--NEWS12
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gpgme.texi8
-rw-r--r--gpgme/ChangeLog3
-rw-r--r--gpgme/keylist.c16
5 files changed, 41 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 25f40cf8..0a76003d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,15 @@
+Noteworthy changes in version 0.4.3 (unreleased)
+------------------------------------------------
+
+ * gpgme_get_key fails with GPG_ERR_AMBIGUOUS_NAME if the key ID
+ provided was not unique, instead returning the first matching key.
+
+ * Interface changes relative to the 0.4.3 release:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+gpgme_get_key CHANGED: Fails correctly if key ID not unique.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
Noteworthy changes in version 0.4.2 (2003-07-30)
------------------------------------------------
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 115ae61e..60336a8f 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2003-07-31 Marcus Brinkmann <[email protected]>
+
+ * gpgme.texi (Listing Keys): Document GPG_ERR_AMBIGUOUS_NAME for
+ gpgme_get_key.
+
2003-07-29 Marcus Brinkmann <[email protected]>
* Makefile.am (EXTRA_DIST): Remove variable.
diff --git a/doc/gpgme.texi b/doc/gpgme.texi
index 916c68e2..4a97e8de 100644
--- a/doc/gpgme.texi
+++ b/doc/gpgme.texi
@@ -1144,7 +1144,8 @@ were configured to exclude support for this engine, or because the
engine is not installed properly.
@item GPG_ERR_AMBIGUOUS_NAME
-This value indicates that a user ID did not specify a unique key.
+This value indicates that a user ID or other specifier did not specify
+a unique key.
@item GPG_ERR_WRONG_KEY_USAGE
This value indicates that a key is not used appropriately.
@@ -2377,8 +2378,9 @@ the error code @code{GPG_ERR_NO_ERROR} and *@var{r_key} will be set to
The function returns the error code @code{GPG_ERR_INV_VALUE} if
@var{ctx} or @var{r_key} is not a valid pointer or @var{fpr} is not a
-fingerprint or key ID, and @code{GPG_ERR_ENOMEM} if at some time
-during the operation there was not enough memory available.
+fingerprint or key ID, @code{GPG_ERR_AMBIGUOUS_NAME} if the key ID was
+not a unique specifier for a key, and @code{GPG_ERR_ENOMEM} if at some
+time during the operation there was not enough memory available.
@end deftypefun
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 4d6ff1b6..7108693f 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,5 +1,8 @@
2003-07-31 Marcus Brinkmann <[email protected]>
+ * keylist.c (gpgme_get_key): Check if there is more than one key
+ listed, and return GPG_ERR_AMBIGUOUS_NAME in that case.
+
* util.h (_gpgme_decode_c_string): Change type of LEN argument to
size_t.
(_gpgme_decode_percent_string): Likewise.
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;
}