aboutsummaryrefslogtreecommitdiffstats
path: root/src/verify.c
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-05-10 11:03:34 +0000
committerJustus Winter <[email protected]>2016-05-10 11:03:34 +0000
commitf531608539b45f0bbd036f430943b390ec21aa65 (patch)
tree56cf3f4db0c38e668645668ebb3dec418bed77a5 /src/verify.c
parentMore GTK2 removal (diff)
parentAllow cc to detect missing cases in a switch. (diff)
downloadgpgme-f531608539b45f0bbd036f430943b390ec21aa65.tar.gz
gpgme-f531608539b45f0bbd036f430943b390ec21aa65.zip
Merge branch 'master' into justus/pyme3
Diffstat (limited to 'src/verify.c')
-rw-r--r--src/verify.c16
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: