diff options
| -rw-r--r-- | gpgme/ChangeLog | 6 | ||||
| -rw-r--r-- | gpgme/verify.c | 11 | 
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) | 
