aboutsummaryrefslogtreecommitdiffstats
path: root/g10/gpg.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-06-03 16:52:06 +0000
committerWerner Koch <[email protected]>2024-06-03 16:52:06 +0000
commited118e2ed521d82c1be7765a0a19d5b4f19afe10 (patch)
tree61c2a3b3cdff0907f6b1546a6b74ba5f1bcf660d /g10/gpg.c
parentcommon: New function tokenize_to_strlist. (diff)
downloadgnupg-ed118e2ed521d82c1be7765a0a19d5b4f19afe10.tar.gz
gnupg-ed118e2ed521d82c1be7765a0a19d5b4f19afe10.zip
gpg: New option --default-new-key-adsk.
* g10/options.h (opt): Add field def_new_key_adsks. * g10/gpg.c (oDefaultNewKeyADSK): New. (opts): Add --default-new-key-adsk. (main): Parse option. * g10/keyedit.c (menu_addadsk): Factor some code out to ... (append_adsk_to_key): new. Add compliance check. * g10/keygen.c (pADSK): New. (para_data_s): Add adsk to the union. (release_parameter_list): Free the adsk. (prepare_adsk): New. (get_parameter_adsk): New. (get_parameter_revkey): Remove unneeded arg key and change callers. (proc_parameter_file): Prepare adsk parameter from the configured fingerprints. (do_generate_keypair): Create adsk. -- GnuPG-bug-id: 6882
Diffstat (limited to 'g10/gpg.c')
-rw-r--r--g10/gpg.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/g10/gpg.c b/g10/gpg.c
index c2165dafc..5359d1582 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -435,6 +435,7 @@ enum cmd_and_opt_values
oTOFUDefaultPolicy,
oTOFUDBFormat,
oDefaultNewKeyAlgo,
+ oDefaultNewKeyADSK,
oWeakDigest,
oUnwrap,
oOnlySignTextIDs,
@@ -650,6 +651,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_n (oPGP7, "pgp7", "@"),
ARGPARSE_s_n (oPGP8, "pgp8", "@"),
ARGPARSE_s_s (oDefaultNewKeyAlgo, "default-new-key-algo", "@"),
+ ARGPARSE_s_s (oDefaultNewKeyADSK, "default-new-key-adsk", "@"),
ARGPARSE_p_u (oMinRSALength, "min-rsa-length", "@"),
#ifndef NO_TRUST_MODELS
ARGPARSE_s_n (oAlwaysTrust, "always-trust", "@"),
@@ -2372,6 +2374,7 @@ main (int argc, char **argv)
const char *fname;
char *username;
int may_coredump;
+ gpg_error_t tmperr;
strlist_t sl;
strlist_t remusr = NULL;
strlist_t locusr = NULL;
@@ -3778,6 +3781,16 @@ main (int argc, char **argv)
opt.def_new_key_algo = pargs.r.ret_str;
break;
+ case oDefaultNewKeyADSK:
+ if (!strcmp (pargs.r.ret_str, "clear"))
+ FREE_STRLIST (opt.def_new_key_adsks);
+ else if (!tokenize_to_strlist (&opt.def_new_key_adsks,
+ pargs.r.ret_str, " \t,")
+ && (tmperr = gpg_err_code_from_syserror()) != GPG_ERR_ENOENT)
+ log_info (_("error parsing value for option '%s': %s\n"),
+ "--default-new-key-algo", gpg_strerror (tmperr));
+ break;
+
case oUseOnlyOpenPGPCard:
opt.flags.use_only_openpgp_card = 1;
break;
@@ -4291,8 +4304,7 @@ main (int argc, char **argv)
&& (ALWAYS_ADD_KEYRINGS
|| (cmd != aDeArmor && cmd != aEnArmor && cmd != aGPGConfTest)))
{
- gpg_error_t tmperr = 0;
-
+ tmperr = 0;
if (!nrings || default_keyring > 0) /* Add default ring. */
tmperr = keydb_add_resource ("pubring" EXTSEP_S GPGEXT_GPG,
KEYDB_RESOURCE_FLAG_DEFAULT);