From fa1155e89ebb4b16ee95549b8ab72672df3a0c54 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 13 Jul 2017 17:28:32 +0200 Subject: gpg: New option --key-origin. * g10/keydb.h (KEYORG_): Rename to KEYORG_. * g10/packet.h (PKT_user_id): Rename field keysrc to keyorg. Adjust users. (PKT_public_key): Ditto. (PKT_ring_trust): Ditto. * g10/options.h (struct opt): Add field key_origin. * g10/getkey.c (parse_key_origin): New. * g10/gpg.c (oKeyOrigin): New. (opts): Add "keys-origin". (main): Set option. Signed-off-by: Werner Koch --- g10/getkey.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'g10/getkey.c') diff --git a/g10/getkey.c b/g10/getkey.c index a3df8578a..285ea35d7 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -4294,6 +4294,41 @@ 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[] = { + { "self", KEYORG_SELF }, + { "file", KEYORG_FILE }, + { "url", KEYORG_URL }, + { "wkd", KEYORG_WKD }, + { "dane", KEYORG_DANE }, + { "ks-pref", KEYORG_KS_PREF }, + { "ks", KEYORG_KS }, + { "unknown", KEYORG_UNKNOWN } + }; + 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); + g10_exit (1); + } + + for (i=0; i < DIM (list); i++) + if (!ascii_strcasecmp (string, list[i].name)) + { + opt.key_origin = list[i].origin; + return 1; + } + + return 0; +} + + /* 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 -- cgit v1.2.3