diff options
| author | Werner Koch <[email protected]> | 2018-03-20 10:13:14 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2018-03-20 10:13:14 +0000 | 
| commit | 44f9e80ea99733f373d75c3632273f763e6f5853 (patch) | |
| tree | b3a504019e761a7624908058a0987eab01bf4505 /src | |
| parent | json: Add framework for the gpgme-json tool (diff) | |
| parent | core: Do not clobber R_KEY in gpgme_get_key on error. (diff) | |
| download | gpgme-44f9e80ea99733f373d75c3632273f763e6f5853.tar.gz gpgme-44f9e80ea99733f373d75c3632273f763e6f5853.zip | |
Merge branch 'master' into json-tool
Diffstat (limited to '')
| -rw-r--r-- | src/gpgme.h.in | 3 | ||||
| -rw-r--r-- | src/import.c | 9 | ||||
| -rw-r--r-- | src/keylist.c | 12 | 
3 files changed, 17 insertions, 7 deletions
| diff --git a/src/gpgme.h.in b/src/gpgme.h.in index ff80023e..e3198798 100644 --- a/src/gpgme.h.in +++ b/src/gpgme.h.in @@ -1639,6 +1639,9 @@ struct _gpgme_op_import_result    /* List of keys for which an import was attempted.  */    gpgme_import_status_t imports; + +  /* Number of v3 keys skipped.  */ +  int skipped_v3_keys;  };  typedef struct _gpgme_op_import_result *gpgme_import_result_t; diff --git a/src/import.c b/src/import.c index 386ca722..f0d9d9fa 100644 --- a/src/import.c +++ b/src/import.c @@ -94,8 +94,9 @@ gpgme_op_import_result (gpgme_ctx_t ctx)        TRACE_LOG3 ("%i secret keys, %i imported, %i unchanged",  		  opd->result.secret_read, opd->result.secret_imported,  		  opd->result.secret_unchanged); -      TRACE_LOG2 ("%i skipped new keys, %i not imported", -		  opd->result.skipped_new_keys, opd->result.not_imported); +      TRACE_LOG3 ("%i skipped new keys, %i not imported, %i v3 skipped", +		  opd->result.skipped_new_keys, opd->result.not_imported, +                  opd->result.skipped_v3_keys);        impstat = opd->result.imports;        i = 0; @@ -212,6 +213,10 @@ parse_import_res (char *args, gpgme_import_result_t result)    PARSE_NEXT (result->secret_unchanged);    PARSE_NEXT (result->skipped_new_keys);    PARSE_NEXT (result->not_imported); +  if (args && *args) +    { +      PARSE_NEXT (result->skipped_v3_keys); +    }    return 0;  } diff --git a/src/keylist.c b/src/keylist.c index 24a9b0b3..7956935b 100644 --- a/src/keylist.c +++ b/src/keylist.c @@ -1261,7 +1261,7 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key,  {    gpgme_ctx_t listctx;    gpgme_error_t err; -  gpgme_key_t key; +  gpgme_key_t result, key;    TRACE_BEG2 (DEBUG_CTX, "gpgme_get_key", ctx,  	      "fpr=%s, secret=%i", fpr, secret); @@ -1295,7 +1295,7 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key,    err = gpgme_op_keylist_start (listctx, fpr, secret);    if (!err) -    err = gpgme_op_keylist_next (listctx, r_key); +    err = gpgme_op_keylist_next (listctx, &result);    if (!err)      {      try_next_key: @@ -1305,9 +1305,9 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key,        else  	{            if (!err -              && *r_key && (*r_key)->subkeys && (*r_key)->subkeys->fpr +              && result && result->subkeys && result->subkeys->fpr                && key && key->subkeys && key->subkeys->fpr -              && !strcmp ((*r_key)->subkeys->fpr, key->subkeys->fpr)) +              && !strcmp (result->subkeys->fpr, key->subkeys->fpr))              {                /* The fingerprint is identical.  We assume that this is                   the same key and don't mark it as an ambiguous.  This @@ -1323,12 +1323,14 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key,  	      gpgme_key_unref (key);  	      err = gpg_error (GPG_ERR_AMBIGUOUS_NAME);  	    } -	  gpgme_key_unref (*r_key); +	  gpgme_key_unref (result); +          result = NULL;  	}      }    gpgme_release (listctx);    if (! err)      { +      *r_key = result;        TRACE_LOG2 ("key=%p (%s)", *r_key,  		  ((*r_key)->subkeys && (*r_key)->subkeys->fpr) ?  		  (*r_key)->subkeys->fpr : "invalid"); | 
