aboutsummaryrefslogtreecommitdiffstats
path: root/src/keylist.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2017-08-24 12:21:15 +0000
committerWerner Koch <[email protected]>2017-08-24 14:20:51 +0000
commit9bde9144f0c2d0087799511e9b041dc945a4cfa8 (patch)
tree768790cb29da24b343ae889d8484105e768b388c /src/keylist.c
parentgpgconf: Add more comments. (diff)
downloadgpgme-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.c23
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;