diff options
Diffstat (limited to 'src/sign.c')
| -rw-r--r-- | src/sign.c | 25 | 
1 files changed, 24 insertions, 1 deletions
| @@ -42,6 +42,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 signer in       the list.  This makes appending new invalid signers painless       while preserving the order.  */ @@ -86,6 +92,7 @@ release_op_data (void *hook)      }    release_signatures (opd->result.signatures); +  free (opd->kc_fpr);  } @@ -316,6 +323,17 @@ _gpgme_sign_status_handler (void *priv, gpgme_status_code_t code, char *args)        opd->last_sig_p = &(*opd->last_sig_p)->next;        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:        if (opd->inv_sgnr_seen && opd->ignore_inv_recp)          break; @@ -323,11 +341,16 @@ _gpgme_sign_status_handler (void *priv, gpgme_status_code_t code, char *args)      case GPGME_STATUS_INV_SGNR:        if (code == GPGME_STATUS_INV_SGNR)          opd->inv_sgnr_seen = 1; -      err = _gpgme_parse_inv_recp (args, opd->last_signer_p); +      free (opd->kc_fpr); +      opd->kc_fpr = NULL; +      err = _gpgme_parse_inv_recp (args, 1, opd->kc_fpr, opd->kc_flags, +                                   opd->last_signer_p);        if (err)  	return err;        opd->last_signer_p = &(*opd->last_signer_p)->next; +      free (opd->kc_fpr); +      opd->kc_fpr = NULL;        break;      case GPGME_STATUS_FAILURE: | 
