aboutsummaryrefslogtreecommitdiffstats
path: root/g10/getkey.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2017-07-13 15:28:32 +0000
committerWerner Koch <[email protected]>2017-07-13 16:29:01 +0000
commitfa1155e89ebb4b16ee95549b8ab72672df3a0c54 (patch)
tree515f2f5684c032772406b27e4ea94a91c87e766a /g10/getkey.c
parentdoc: Document gnupg version requirement for gpg-preset-passphrase. (diff)
downloadgnupg-fa1155e89ebb4b16ee95549b8ab72672df3a0c54.tar.gz
gnupg-fa1155e89ebb4b16ee95549b8ab72672df3a0c54.zip
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 <[email protected]>
Diffstat (limited to 'g10/getkey.c')
-rw-r--r--g10/getkey.c35
1 files changed, 35 insertions, 0 deletions
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