diff options
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 |