aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2002-02-25 19:08:51 +0000
committerMarcus Brinkmann <[email protected]>2002-02-25 19:08:51 +0000
commitd75d6fb26208d3f135a99126c70f20396c6e458c (patch)
tree74d06a2ba3c93dbba798c4fa2f0fe23b9b8c905d
parentFix typo. (diff)
downloadgpgme-d75d6fb26208d3f135a99126c70f20396c6e458c.tar.gz
gpgme-d75d6fb26208d3f135a99126c70f20396c6e458c.zip
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.
-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)