diff options
Diffstat (limited to 'src/encrypt.c')
-rw-r--r-- | src/encrypt.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/encrypt.c b/src/encrypt.c index 9f5134de..8672cd36 100644 --- a/src/encrypt.c +++ b/src/encrypt.c @@ -39,6 +39,12 @@ typedef struct /* The error code from a FAILURE status line or 0. */ gpg_error_t failure_code; + /* The fingerprint from the last KEY_CONSIDERED status line. */ + char *kc_fpr; + + /* The flags from the last KEY_CONSIDERED status line. */ + unsigned int kc_flags; + /* A pointer to the next pointer of the last invalid recipient in the list. This makes appending new invalid recipients painless while preserving the order. */ @@ -60,6 +66,8 @@ release_op_data (void *hook) free (invalid_recipient); invalid_recipient = next; } + + free (opd->kc_fpr); } @@ -128,12 +136,26 @@ _gpgme_encrypt_status_handler (void *priv, gpgme_status_code_t code, return opd->failure_code; break; + case GPGME_STATUS_KEY_CONSIDERED: + /* This is emitted during gpg's key lookup to give information + * about the lookup results. We store the last one so it can be + * used in connection with INV_RECP. */ + free (opd->kc_fpr); + opd->kc_fpr = NULL; + err = _gpgme_parse_key_considered (args, &opd->kc_fpr, &opd->kc_flags); + if (err) + return err; + break; + case GPGME_STATUS_INV_RECP: - err = _gpgme_parse_inv_recp (args, opd->lastp); + err = _gpgme_parse_inv_recp (args, 0, opd->kc_fpr, opd->kc_flags, + opd->lastp); if (err) - return err; + return err; opd->lastp = &(*opd->lastp)->next; + free (opd->kc_fpr); + opd->kc_fpr = NULL; break; case GPGME_STATUS_NO_RECP: |