diff options
Diffstat (limited to 'src/verify.c')
| -rw-r--r-- | src/verify.c | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/src/verify.c b/src/verify.c index 37b2bd46..75914e22 100644 --- a/src/verify.c +++ b/src/verify.c @@ -38,6 +38,9 @@ typedef struct  {    struct _gpgme_op_verify_result result; +  /* The error code from a FAILURE status line or 0.  */ +  gpg_error_t failure_code; +    gpgme_signature_t current_sig;    int did_prepare_new_sig;    int only_newsig_seen; @@ -195,6 +198,10 @@ calc_sig_summary (gpgme_signature_t sig)        sum |= GPGME_SIGSUM_KEY_MISSING;        break; +    case GPG_ERR_CERT_REVOKED: +      sum |= GPGME_SIGSUM_KEY_REVOKED; +      break; +      case GPG_ERR_BAD_SIGNATURE:      case GPG_ERR_NO_ERROR:        break; @@ -213,6 +220,9 @@ calc_sig_summary (gpgme_signature_t sig)        break;      case GPG_ERR_CERT_REVOKED: +      /* Note that this is a second way to set this flag.  It may also +         have been set due to a sig->status of STATUS_REVKEYSIG from +         parse_new_sig.  */        sum |= GPGME_SIGSUM_KEY_REVOKED;        break; @@ -762,6 +772,10 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)           error code if we are not ready to process this status.  */        return parse_error (sig, args, !!sig ); +    case GPGME_STATUS_FAILURE: +      opd->failure_code = _gpgme_parse_failure (args); +      break; +      case GPGME_STATUS_EOF:        if (sig && !opd->did_prepare_new_sig)  	calc_sig_summary (sig); @@ -788,6 +802,8 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)            opd->current_sig = NULL;          }        opd->only_newsig_seen = 0; +      if (opd->failure_code) +        return opd->failure_code;        break;      case GPGME_STATUS_PLAINTEXT: | 
