ishcherb / rpms / gpgme

Forked from rpms/gpgme 6 years ago
Clone

Blame 0001-Return-dedicated-error-code-for-all-subkeys-expired-.patch

Igor Gnatenko ffc545a
From e09f681427d700282988885a80dc2bc8d4573718 Mon Sep 17 00:00:00 2001
Igor Gnatenko ffc545a
From: Werner Koch <wk@gnupg.org>
Igor Gnatenko ffc545a
Date: Tue, 17 May 2016 20:21:01 +0200
Igor Gnatenko ffc545a
Subject: [PATCH] Return dedicated error code for all subkeys expired or
Igor Gnatenko ffc545a
 revoked.
Igor Gnatenko ffc545a
Igor Gnatenko ffc545a
* src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
Igor Gnatenko ffc545a
(GPGME_SIGSUM_TOFU_CONFLICT): New.
Igor Gnatenko ffc545a
* src/status-table.c (KEY_CONSIDERED): New.
Igor Gnatenko ffc545a
* src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
Igor Gnatenko ffc545a
KC_FLAGS.  Use calloc.  Detect all expired or revoked subkeys.
Igor Gnatenko ffc545a
(_gpgme_parse_key_considered): New.
Igor Gnatenko ffc545a
* src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
Igor Gnatenko ffc545a
(release_op_data): Free KC_FPR.
Igor Gnatenko ffc545a
(_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
Igor Gnatenko ffc545a
* src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
Igor Gnatenko ffc545a
(release_op_data): Free KC_FPR.
Igor Gnatenko ffc545a
(_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
Igor Gnatenko ffc545a
Igor Gnatenko ffc545a
Signed-off-by: Werner Koch <wk@gnupg.org>
Igor Gnatenko ffc545a
(cherry picked from commit 315fb73d4a774e2c699ac1804f5377559b4d0027)
Igor Gnatenko ffc545a
---
Igor Gnatenko ffc545a
 src/encrypt.c      | 26 ++++++++++++++++++++--
Igor Gnatenko ffc545a
 src/gpgme.h.in     | 10 +++++++--
Igor Gnatenko ffc545a
 src/op-support.c   | 65 +++++++++++++++++++++++++++++++++++++++++++++++-------
Igor Gnatenko ffc545a
 src/ops.h          |  8 ++++++-
Igor Gnatenko ffc545a
 src/sign.c         | 25 ++++++++++++++++++++-
Igor Gnatenko ffc545a
 src/status-table.c |  1 +
Igor Gnatenko ffc545a
 6 files changed, 121 insertions(+), 14 deletions(-)
Igor Gnatenko ffc545a
Igor Gnatenko ffc545a
diff --git a/src/encrypt.c b/src/encrypt.c
Igor Gnatenko ffc545a
index 9f5134d..8672cd3 100644
Igor Gnatenko ffc545a
--- a/src/encrypt.c
Igor Gnatenko ffc545a
+++ b/src/encrypt.c
Igor Gnatenko ffc545a
@@ -39,6 +39,12 @@ typedef struct
Igor Gnatenko ffc545a
   /* The error code from a FAILURE status line or 0.  */
Igor Gnatenko ffc545a
   gpg_error_t failure_code;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
+  /* The fingerprint from the last KEY_CONSIDERED status line.  */
Igor Gnatenko ffc545a
+  char *kc_fpr;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  /* The flags from the last KEY_CONSIDERED status line.  */
Igor Gnatenko ffc545a
+  unsigned int kc_flags;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
   /* A pointer to the next pointer of the last invalid recipient in
Igor Gnatenko ffc545a
      the list.  This makes appending new invalid recipients painless
Igor Gnatenko ffc545a
      while preserving the order.  */
Igor Gnatenko ffc545a
@@ -60,6 +66,8 @@ release_op_data (void *hook)
Igor Gnatenko ffc545a
       free (invalid_recipient);
Igor Gnatenko ffc545a
       invalid_recipient = next;
Igor Gnatenko ffc545a
     }
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  free (opd->kc_fpr);
Igor Gnatenko ffc545a
 }
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
@@ -128,12 +136,26 @@ _gpgme_encrypt_status_handler (void *priv, gpgme_status_code_t code,
Igor Gnatenko ffc545a
         return opd->failure_code;
Igor Gnatenko ffc545a
       break;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
+    case GPGME_STATUS_KEY_CONSIDERED:
Igor Gnatenko ffc545a
+      /* This is emitted during gpg's key lookup to give information
Igor Gnatenko ffc545a
+       * about the lookup results.  We store the last one so it can be
Igor Gnatenko ffc545a
+       * used in connection with INV_RECP.  */
Igor Gnatenko ffc545a
+      free (opd->kc_fpr);
Igor Gnatenko ffc545a
+      opd->kc_fpr = NULL;
Igor Gnatenko ffc545a
+      err = _gpgme_parse_key_considered (args, &opd->kc_fpr, &opd->kc_flags);
Igor Gnatenko ffc545a
+      if (err)
Igor Gnatenko ffc545a
+        return err;
Igor Gnatenko ffc545a
+      break;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
     case GPGME_STATUS_INV_RECP:
Igor Gnatenko ffc545a
-      err = _gpgme_parse_inv_recp (args, opd->lastp);
Igor Gnatenko ffc545a
+      err = _gpgme_parse_inv_recp (args, 0, opd->kc_fpr, opd->kc_flags,
Igor Gnatenko ffc545a
+                                   opd->lastp);
Igor Gnatenko ffc545a
       if (err)
Igor Gnatenko ffc545a
-	return err;
Igor Gnatenko ffc545a
+        return err;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
       opd->lastp = &(*opd->lastp)->next;
Igor Gnatenko ffc545a
+      free (opd->kc_fpr);
Igor Gnatenko ffc545a
+      opd->kc_fpr = NULL;
Igor Gnatenko ffc545a
       break;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
     case GPGME_STATUS_NO_RECP:
Igor Gnatenko ffc545a
diff --git a/src/gpgme.h.in b/src/gpgme.h.in
Igor Gnatenko ffc545a
index 6cea2c7..cad95f3 100644
Igor Gnatenko ffc545a
--- a/src/gpgme.h.in
Igor Gnatenko ffc545a
+++ b/src/gpgme.h.in
Igor Gnatenko ffc545a
@@ -531,7 +531,8 @@ typedef enum
Igor Gnatenko ffc545a
     GPGME_STATUS_BEGIN_SIGNING = 90,
Igor Gnatenko ffc545a
     GPGME_STATUS_KEY_NOT_CREATED = 91,
Igor Gnatenko ffc545a
     GPGME_STATUS_INQUIRE_MAXLEN = 92,
Igor Gnatenko ffc545a
-    GPGME_STATUS_FAILURE = 93
Igor Gnatenko ffc545a
+    GPGME_STATUS_FAILURE = 93,
Igor Gnatenko ffc545a
+    GPGME_STATUS_KEY_CONSIDERED = 94
Igor Gnatenko ffc545a
   }
Igor Gnatenko ffc545a
 gpgme_status_code_t;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
@@ -860,7 +861,12 @@ typedef struct _gpgme_key *gpgme_key_t;
Igor Gnatenko ffc545a
 struct _gpgme_invalid_key
Igor Gnatenko ffc545a
 {
Igor Gnatenko ffc545a
   struct _gpgme_invalid_key *next;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  /* The string used to request the key.  Despite the name this may
Igor Gnatenko ffc545a
+   * not be a fingerprint.  */
Igor Gnatenko ffc545a
   char *fpr;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  /* The error code.  */
Igor Gnatenko ffc545a
   gpgme_error_t reason;
Igor Gnatenko ffc545a
 };
Igor Gnatenko ffc545a
 typedef struct _gpgme_invalid_key *gpgme_invalid_key_t;
Igor Gnatenko ffc545a
@@ -1539,7 +1545,7 @@ struct _gpgme_signature
Igor Gnatenko ffc545a
   /* Signature creation time.  */
Igor Gnatenko ffc545a
   unsigned long timestamp;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
-  /* Signature exipration time or 0.  */
Igor Gnatenko ffc545a
+  /* Signature expiration time or 0.  */
Igor Gnatenko ffc545a
   unsigned long exp_timestamp;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
   /* Key should not have been used for signing.  */
Igor Gnatenko ffc545a
diff --git a/src/op-support.c b/src/op-support.c
Igor Gnatenko ffc545a
index 02940ef..d51d643 100644
Igor Gnatenko ffc545a
--- a/src/op-support.c
Igor Gnatenko ffc545a
+++ b/src/op-support.c
Igor Gnatenko ffc545a
@@ -33,6 +33,11 @@
Igor Gnatenko ffc545a
 #include "util.h"
Igor Gnatenko ffc545a
 #include "debug.h"
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
+#if GPG_ERROR_VERSION_NUMBER < 0x011700  /* 1.23 */
Igor Gnatenko ffc545a
+# define GPG_ERR_SUBKEYS_EXP_REV 217
Igor Gnatenko ffc545a
+#endif
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
 gpgme_error_t
Igor Gnatenko ffc545a
 _gpgme_op_data_lookup (gpgme_ctx_t ctx, ctx_op_data_id_t type, void **hook,
Igor Gnatenko ffc545a
@@ -190,16 +195,19 @@ _gpgme_op_reset (gpgme_ctx_t ctx, int type)
Igor Gnatenko ffc545a
 }
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
-/* Parse the INV_RECP or INV-SNDR status line in ARGS and return the
Igor Gnatenko ffc545a
-   result in KEY.  */
Igor Gnatenko ffc545a
+/* Parse the INV_RECP or INV_SNDR status line in ARGS and return the
Igor Gnatenko ffc545a
+   result in KEY.  If KC_FPR (from the KEY_CONSIDERED status line) is
Igor Gnatenko ffc545a
+   not NULL take the KC_FLAGS in account. */
Igor Gnatenko ffc545a
 gpgme_error_t
Igor Gnatenko ffc545a
-_gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
Igor Gnatenko ffc545a
+_gpgme_parse_inv_recp (char *args, int for_signing,
Igor Gnatenko ffc545a
+                       const char *kc_fpr, unsigned int kc_flags,
Igor Gnatenko ffc545a
+                       gpgme_invalid_key_t *key)
Igor Gnatenko ffc545a
 {
Igor Gnatenko ffc545a
   gpgme_invalid_key_t inv_key;
Igor Gnatenko ffc545a
   char *tail;
Igor Gnatenko ffc545a
   long int reason;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
-  inv_key = malloc (sizeof (*inv_key));
Igor Gnatenko ffc545a
+  inv_key = calloc (1, sizeof (*inv_key));
Igor Gnatenko ffc545a
   if (!inv_key)
Igor Gnatenko ffc545a
     return gpg_error_from_syserror ();
Igor Gnatenko ffc545a
   inv_key->next = NULL;
Igor Gnatenko ffc545a
@@ -214,9 +222,11 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
   switch (reason)
Igor Gnatenko ffc545a
     {
Igor Gnatenko ffc545a
-    default:
Igor Gnatenko ffc545a
     case 0:
Igor Gnatenko ffc545a
-      inv_key->reason = gpg_error (GPG_ERR_GENERAL);
Igor Gnatenko ffc545a
+      if (kc_fpr && (kc_flags & 2))
Igor Gnatenko ffc545a
+        inv_key->reason = gpg_error (GPG_ERR_SUBKEYS_EXP_OR_REV);
Igor Gnatenko ffc545a
+      else
Igor Gnatenko ffc545a
+        inv_key->reason = gpg_error (GPG_ERR_GENERAL);
Igor Gnatenko ffc545a
       break;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
     case 1:
Igor Gnatenko ffc545a
@@ -274,6 +284,10 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
Igor Gnatenko ffc545a
     case 14:
Igor Gnatenko ffc545a
       inv_key->reason = gpg_error (GPG_ERR_INV_USER_ID);
Igor Gnatenko ffc545a
       break;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+    default:
Igor Gnatenko ffc545a
+      inv_key->reason = gpg_error (GPG_ERR_GENERAL);
Igor Gnatenko ffc545a
+      break;
Igor Gnatenko ffc545a
     }
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
   while (*tail && *tail == ' ')
Igor Gnatenko ffc545a
@@ -287,14 +301,49 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)
Igor Gnatenko ffc545a
 	  return gpg_error_from_syserror ();
Igor Gnatenko ffc545a
 	}
Igor Gnatenko ffc545a
     }
Igor Gnatenko ffc545a
-  else
Igor Gnatenko ffc545a
-    inv_key->fpr = NULL;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
   *key = inv_key;
Igor Gnatenko ffc545a
   return 0;
Igor Gnatenko ffc545a
 }
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+/* Parse a KEY_CONSIDERED status line in ARGS and store the
Igor Gnatenko ffc545a
+ * fingerprint and the flags at R_FPR and R_FLAGS.  The caller must
Igor Gnatenko ffc545a
+ * free the value at R_FPR on success.  */
Igor Gnatenko ffc545a
+gpgme_error_t
Igor Gnatenko ffc545a
+_gpgme_parse_key_considered (const char *args,
Igor Gnatenko ffc545a
+                             char **r_fpr, unsigned int *r_flags)
Igor Gnatenko ffc545a
+{
Igor Gnatenko ffc545a
+  char *pend;
Igor Gnatenko ffc545a
+  size_t n;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  *r_fpr = NULL;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  pend = strchr (args, ' ');
Igor Gnatenko ffc545a
+  if (!pend || pend == args)
Igor Gnatenko ffc545a
+    return trace_gpg_error (GPG_ERR_INV_ENGINE);  /* Bogus status line.  */
Igor Gnatenko ffc545a
+  n = pend - args;
Igor Gnatenko ffc545a
+  *r_fpr = malloc (n + 1);
Igor Gnatenko ffc545a
+  if (!*r_fpr)
Igor Gnatenko ffc545a
+    return gpg_error_from_syserror ();
Igor Gnatenko ffc545a
+  memcpy (*r_fpr, args, n);
Igor Gnatenko ffc545a
+  (*r_fpr)[n] = 0;
Igor Gnatenko ffc545a
+  args = pend + 1;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  gpg_err_set_errno (0);
Igor Gnatenko ffc545a
+  *r_flags = strtoul (args, &pend, 0);
Igor Gnatenko ffc545a
+  if (errno || args == pend || (*pend && *pend != ' '))
Igor Gnatenko ffc545a
+    {
Igor Gnatenko ffc545a
+      free (*r_fpr);
Igor Gnatenko ffc545a
+      *r_fpr = NULL;
Igor Gnatenko ffc545a
+      return trace_gpg_error (GPG_ERR_INV_ENGINE);
Igor Gnatenko ffc545a
+    }
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  return 0;
Igor Gnatenko ffc545a
+}
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
 /* Parse the PLAINTEXT status line in ARGS and return the result in
Igor Gnatenko ffc545a
    FILENAMEP.  */
Igor Gnatenko ffc545a
 gpgme_error_t
Igor Gnatenko ffc545a
diff --git a/src/ops.h b/src/ops.h
Igor Gnatenko ffc545a
index 3662d57..9c27529 100644
Igor Gnatenko ffc545a
--- a/src/ops.h
Igor Gnatenko ffc545a
+++ b/src/ops.h
Igor Gnatenko ffc545a
@@ -57,9 +57,15 @@ gpgme_error_t _gpgme_op_data_lookup (gpgme_ctx_t ctx, ctx_op_data_id_t type,
Igor Gnatenko ffc545a
 /* Prepare a new operation on CTX.  */
Igor Gnatenko ffc545a
 gpgme_error_t _gpgme_op_reset (gpgme_ctx_t ctx, int synchronous);
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
+/* Parse the KEY_CONSIDERED status line.  */
Igor Gnatenko ffc545a
+gpgme_error_t _gpgme_parse_key_considered (const char *args,
Igor Gnatenko ffc545a
+                                           char **r_fpr, unsigned int *r_flags);
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
 /* Parse the INV_RECP status line in ARGS and return the result in
Igor Gnatenko ffc545a
    KEY.  */
Igor Gnatenko ffc545a
-gpgme_error_t _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key);
Igor Gnatenko ffc545a
+gpgme_error_t _gpgme_parse_inv_recp (char *args, int for_signing,
Igor Gnatenko ffc545a
+                                     const char *kc_fpr, unsigned int kc_flags,
Igor Gnatenko ffc545a
+                                     gpgme_invalid_key_t *key);
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
 /* Parse the PLAINTEXT status line in ARGS and return the result in
Igor Gnatenko ffc545a
    FILENAMEP.  */
Igor Gnatenko ffc545a
diff --git a/src/sign.c b/src/sign.c
Igor Gnatenko ffc545a
index 6c9fc03..d8650a9 100644
Igor Gnatenko ffc545a
--- a/src/sign.c
Igor Gnatenko ffc545a
+++ b/src/sign.c
Igor Gnatenko ffc545a
@@ -42,6 +42,12 @@ typedef struct
Igor Gnatenko ffc545a
   /* The error code from a FAILURE status line or 0.  */
Igor Gnatenko ffc545a
   gpg_error_t failure_code;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
+  /* The fingerprint from the last KEY_CONSIDERED status line.  */
Igor Gnatenko ffc545a
+  char *kc_fpr;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
+  /* The flags from the last KEY_CONSIDERED status line.  */
Igor Gnatenko ffc545a
+  unsigned int kc_flags;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
   /* A pointer to the next pointer of the last invalid signer in
Igor Gnatenko ffc545a
      the list.  This makes appending new invalid signers painless
Igor Gnatenko ffc545a
      while preserving the order.  */
Igor Gnatenko ffc545a
@@ -86,6 +92,7 @@ release_op_data (void *hook)
Igor Gnatenko ffc545a
     }
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
   release_signatures (opd->result.signatures);
Igor Gnatenko ffc545a
+  free (opd->kc_fpr);
Igor Gnatenko ffc545a
 }
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
@@ -316,6 +323,17 @@ _gpgme_sign_status_handler (void *priv, gpgme_status_code_t code, char *args)
Igor Gnatenko ffc545a
       opd->last_sig_p = &(*opd->last_sig_p)->next;
Igor Gnatenko ffc545a
       break;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
+    case GPGME_STATUS_KEY_CONSIDERED:
Igor Gnatenko ffc545a
+      /* This is emitted during gpg's key lookup to give information
Igor Gnatenko ffc545a
+       * about the lookup results.  We store the last one so it can be
Igor Gnatenko ffc545a
+       * used in connection with INV_RECP.  */
Igor Gnatenko ffc545a
+      free (opd->kc_fpr);
Igor Gnatenko ffc545a
+      opd->kc_fpr = NULL;
Igor Gnatenko ffc545a
+      err = _gpgme_parse_key_considered (args, &opd->kc_fpr, &opd->kc_flags);
Igor Gnatenko ffc545a
+      if (err)
Igor Gnatenko ffc545a
+        return err;
Igor Gnatenko ffc545a
+      break;
Igor Gnatenko ffc545a
+
Igor Gnatenko ffc545a
     case GPGME_STATUS_INV_RECP:
Igor Gnatenko ffc545a
       if (opd->inv_sgnr_seen && opd->ignore_inv_recp)
Igor Gnatenko ffc545a
         break;
Igor Gnatenko ffc545a
@@ -323,11 +341,16 @@ _gpgme_sign_status_handler (void *priv, gpgme_status_code_t code, char *args)
Igor Gnatenko ffc545a
     case GPGME_STATUS_INV_SGNR:
Igor Gnatenko ffc545a
       if (code == GPGME_STATUS_INV_SGNR)
Igor Gnatenko ffc545a
         opd->inv_sgnr_seen = 1;
Igor Gnatenko ffc545a
-      err = _gpgme_parse_inv_recp (args, opd->last_signer_p);
Igor Gnatenko ffc545a
+      free (opd->kc_fpr);
Igor Gnatenko ffc545a
+      opd->kc_fpr = NULL;
Igor Gnatenko ffc545a
+      err = _gpgme_parse_inv_recp (args, 1, opd->kc_fpr, opd->kc_flags,
Igor Gnatenko ffc545a
+                                   opd->last_signer_p);
Igor Gnatenko ffc545a
       if (err)
Igor Gnatenko ffc545a
 	return err;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
       opd->last_signer_p = &(*opd->last_signer_p)->next;
Igor Gnatenko ffc545a
+      free (opd->kc_fpr);
Igor Gnatenko ffc545a
+      opd->kc_fpr = NULL;
Igor Gnatenko ffc545a
       break;
Igor Gnatenko ffc545a
 
Igor Gnatenko ffc545a
     case GPGME_STATUS_FAILURE:
Igor Gnatenko ffc545a
diff --git a/src/status-table.c b/src/status-table.c
Igor Gnatenko ffc545a
index 6d428d7..e70cb8b 100644
Igor Gnatenko ffc545a
--- a/src/status-table.c
Igor Gnatenko ffc545a
+++ b/src/status-table.c
Igor Gnatenko ffc545a
@@ -84,6 +84,7 @@ static struct status_table_s status_table[] =
Igor Gnatenko ffc545a
   { "INQUIRE_MAXLEN", GPGME_STATUS_INQUIRE_MAXLEN },
Igor Gnatenko ffc545a
   { "INV_RECP", GPGME_STATUS_INV_RECP },
Igor Gnatenko ffc545a
   { "INV_SGNR", GPGME_STATUS_INV_SGNR },
Igor Gnatenko ffc545a
+  { "KEY_CONSIDERED", GPGME_STATUS_KEY_CONSIDERED },
Igor Gnatenko ffc545a
   { "KEY_CREATED", GPGME_STATUS_KEY_CREATED },
Igor Gnatenko ffc545a
   { "KEY_NOT_CREATED",   GPGME_STATUS_KEY_NOT_CREATED  },
Igor Gnatenko ffc545a
   { "KEYEXPIRED", GPGME_STATUS_KEYEXPIRED },
Igor Gnatenko ffc545a
-- 
Igor Gnatenko ffc545a
2.7.4
Igor Gnatenko ffc545a