aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gpgme/ChangeLog6
-rw-r--r--gpgme/verify.c11
2 files changed, 14 insertions, 3 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 16b91887..ebecd264 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,5 +1,11 @@
2002-02-25 Marcus Brinkmann <[email protected]>
+ * verify.c (_gpgme_verify_status_handler): Parse the args line to
+ see if the problem is due to a missing key, and report that back
+ to the user.
+
+2002-02-25 Marcus Brinkmann <[email protected]>
+
* context.h (struct gpgme_context_s): New member include_certs.
* gpgme.h (gpgme_set_include_certs): Add prototype.
(gpgme_get_include_certs): Likewise.
diff --git a/gpgme/verify.c b/gpgme/verify.c
index 768a6743..ae635790 100644
--- a/gpgme/verify.c
+++ b/gpgme/verify.c
@@ -191,9 +191,14 @@ _gpgme_verify_status_handler (GpgmeCtx ctx, GpgStatusCode code, char *args)
break;
case STATUS_ERRSIG:
- ctx->result.verify->status = GPGME_SIG_STAT_ERROR;
- /* FIXME: Distinguish between a regular error and a missing key.
- This is encoded in the args. */
+ /* The return code is the 6th argument, if it is 9, the problem
+ is a missing key. */
+ for (p = args, i = 0; p && i < 5; i++)
+ p = strchr (p, ' ');
+ if (p && *(++p) == '9' && *(++p) == '\0')
+ ctx->result.verify->status = GPGME_SIG_STAT_NOKEY;
+ else
+ ctx->result.verify->status = GPGME_SIG_STAT_ERROR;
/* Store the keyID in the fpr field. */
p = ctx->result.verify->fpr;
for (i = 0; i < DIM(ctx->result.verify->fpr)