diff options
author | Werner Koch <[email protected]> | 2017-07-20 15:27:48 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-07-20 16:13:40 +0000 |
commit | 165cdd8121bbf80bfe2da071539d3578630f198f (patch) | |
tree | 878fc9f6f81d5d86a31362fb044a159ae9afc274 /g10/getkey.c | |
parent | common: New function print_utf9_string. (diff) | |
download | gnupg-165cdd8121bbf80bfe2da071539d3578630f198f.tar.gz gnupg-165cdd8121bbf80bfe2da071539d3578630f198f.zip |
gpg: New option --with-key-origin.
* g10/getkey.c (parse_key_origin): Factor list out as ...
(key_origin_list): new struct.
(key_origin_string): New.
* g10/gpg.c (oWithKeyOrigin): New const.
(opts): New option --with-key-origin.
(main): Implement option.
* g10/options.h (struct opt): New flag with_key_origin.
* g10/keylist.c (list_keyblock_print): Print key origin info.
(list_keyblock_colon): Ditto.
Diffstat (limited to '')
-rw-r--r-- | g10/getkey.c | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/g10/getkey.c b/g10/getkey.c index 2bec98419..484063e8e 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -4300,11 +4300,13 @@ parse_auto_key_locate (char *options) } -/* Parse the argument for --key-origin. Return false on error. */ -int -parse_key_origin (char *string) -{ - struct { const char *name; int origin; } list[] = { + +/* The list of key origins. */ +static struct { + const char *name; + int origin; +} key_origin_list[] = + { { "self", KEYORG_SELF }, { "file", KEYORG_FILE }, { "url", KEYORG_URL }, @@ -4314,27 +4316,45 @@ parse_key_origin (char *string) { "ks", KEYORG_KS }, { "unknown", KEYORG_UNKNOWN } }; + +/* Parse the argument for --key-origin. Return false on error. */ +int +parse_key_origin (char *string) +{ int i; if (!ascii_strcasecmp (string, "help")) { log_info (_("valid values for option '%s':\n"), "--key-origin"); - for (i=0; i < DIM (list); i++) - log_info (" %s\n", list[i].name); + for (i=0; i < DIM (key_origin_list); i++) + log_info (" %s\n", key_origin_list[i].name); g10_exit (1); } - for (i=0; i < DIM (list); i++) - if (!ascii_strcasecmp (string, list[i].name)) + for (i=0; i < DIM (key_origin_list); i++) + if (!ascii_strcasecmp (string, key_origin_list[i].name)) { - opt.key_origin = list[i].origin; + opt.key_origin = key_origin_list[i].origin; return 1; } return 0; } +/* Return a string or "?" for the key ORIGIN. */ +const char * +key_origin_string (int origin) +{ + int i; + for (i=0; i < DIM (key_origin_list); i++) + if (key_origin_list[i].origin == origin) + return key_origin_list[i].name; + return "?"; +} + + + /* Returns true if a secret key is available for the public key with key id KEYID; returns false if not. This function ignores legacy keys. Note: this is just a fast check and does not tell us whether |