diff options
author | Werner Koch <[email protected]> | 2017-03-20 18:56:10 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-03-20 19:05:16 +0000 |
commit | ea9686ec71a2dd2225ce2b6d6d4038821d36205f (patch) | |
tree | 3fecc122563a27bc34a14ed797b4084529d0aaf8 /src/keylist.c | |
parent | tests: Fix distcheck. (diff) | |
download | gpgme-ea9686ec71a2dd2225ce2b6d6d4038821d36205f.tar.gz gpgme-ea9686ec71a2dd2225ce2b6d6d4038821d36205f.zip |
core,cpp: New key flag 'is_de_vs'.
* src/gpgme.h.in (_gpgme_subkey): New flag is_de_vs.
* tests/run-keylist.c (main): Print that flag.
* src/keylist.c (parse_pub_field18): New.
(keylist_colon_handler): Parse compliance flags.
* lang/cpp/src/key.cpp (Key::isDeVs): New.
(Subkey::isDeVs): New.
* lang/cpp/src/key.h (class Key): New method isDeVs.
(class Subkey): New method isDeVs.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/keylist.c')
-rw-r--r-- | src/keylist.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/keylist.c b/src/keylist.c index 2ce08462..de9bbb2f 100644 --- a/src/keylist.c +++ b/src/keylist.c @@ -416,6 +416,23 @@ parse_sec_field15 (gpgme_key_t key, gpgme_subkey_t subkey, char *field) } +/* Parse the compliance field. */ +static void +parse_pub_field18 (gpgme_subkey_t subkey, char *field) +{ + char *p, *endp; + unsigned long ul; + + for (p = field; p && (ul = strtoul (p, &endp, 10)) && p != endp; p = endp) + { + switch (ul) + { + case 23: subkey->is_de_vs = 1; break; + } + } +} + + /* Parse a tfs record. */ static gpg_error_t parse_tfs_record (gpgme_user_id_t uid, char **field, int nfield) @@ -535,7 +552,7 @@ keylist_colon_handler (void *priv, char *line) RT_SSB, RT_SEC, RT_CRT, RT_CRS, RT_REV, RT_SPK } rectype = RT_NONE; -#define NR_FIELDS 17 +#define NR_FIELDS 18 char *field[NR_FIELDS]; int fields = 0; void *hook; @@ -712,6 +729,10 @@ keylist_colon_handler (void *priv, char *line) return gpg_error_from_syserror (); } + /* Field 18 has the compliance flags. */ + if (fields >= 17 && *field[17]) + parse_pub_field18 (subkey, field[17]); + break; case RT_SUB: @@ -785,6 +806,10 @@ keylist_colon_handler (void *priv, char *line) return gpg_error_from_syserror (); } + /* Field 18 has the compliance flags. */ + if (fields >= 17 && *field[17]) + parse_pub_field18 (subkey, field[17]); + break; case RT_UID: |