diff options
author | Werner Koch <[email protected]> | 2017-08-24 12:21:15 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-08-24 14:20:51 +0000 |
commit | 9bde9144f0c2d0087799511e9b041dc945a4cfa8 (patch) | |
tree | 768790cb29da24b343ae889d8484105e768b388c /src/keylist.c | |
parent | gpgconf: Add more comments. (diff) | |
download | gpgme-9bde9144f0c2d0087799511e9b041dc945a4cfa8.tar.gz gpgme-9bde9144f0c2d0087799511e9b041dc945a4cfa8.zip |
core: New public enum gpgme_keyorg_t.
* src/gpgme.h.in (gpgme_keyorg_t): New.
* src/keylist.c (parse_keyorg): New.
(keylist_colon_handler): Set key->ORIGIN.
--
This finally set the key origin value form data supplied by recent gpg
versions.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/keylist.c')
-rw-r--r-- | src/keylist.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/keylist.c b/src/keylist.c index 5e1c61e6..24a9b0b3 100644 --- a/src/keylist.c +++ b/src/keylist.c @@ -376,6 +376,25 @@ set_ownertrust (gpgme_key_t key, const char *src) } +static gpgme_keyorg_t +parse_keyorg (const char *string) +{ + switch (atoi (string)) + { + case 0: return GPGME_KEYORG_UNKNOWN; + case 1: + case 2: + return GPGME_KEYORG_KS; + case 3: return GPGME_KEYORG_DANE; + case 4: return GPGME_KEYORG_WKD; + case 5: return GPGME_KEYORG_URL; + case 6: return GPGME_KEYORG_FILE; + case 7: return GPGME_KEYORG_SELF; + default: return GPGME_KEYORG_OTHER; + } +} + + /* Parse field 15 of a secret key or subkey. This fields holds a reference to smartcards. FIELD is the content of the field and we are allowed to modify it. */ @@ -719,7 +738,7 @@ keylist_colon_handler (void *priv, char *line) if (fields >= 20) { key->last_update = _gpgme_parse_timestamp_ul (field[18]); - key->origin = 0; /* Fixme: Not yet defined in gpg. */ + key->origin = parse_keyorg (field[19]); } break; @@ -814,7 +833,7 @@ keylist_colon_handler (void *priv, char *line) if (fields >= 20) { opd->tmp_uid->last_update = _gpgme_parse_timestamp_ul (field[18]); - opd->tmp_uid->origin = 0; /* Fixme: Not yet defined in gpg. */ + opd->tmp_uid->origin = parse_keyorg (field[19]); } } break; |