aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <[email protected]>2015-11-03 22:39:46 +0000
committerNeal H. Walfield <[email protected]>2015-11-04 12:19:54 +0000
commitde9b2340153d70b083494d1a277a384dcf43bff0 (patch)
tree68bf97eb4328f45b0401b30962c6041985de9800
parentgpg: Allow multiple --default-key options. Take the last available key. (diff)
downloadgnupg-de9b2340153d70b083494d1a277a384dcf43bff0.tar.gz
gnupg-de9b2340153d70b083494d1a277a384dcf43bff0.zip
gpg: Add --encrypt-to-default-key.
* g10/getkey.c (parse_def_secret_key): Drop the static qualifier and export the function. * g10/gpg.c (enum cmd_and_opt_values): Add value oEncryptToDefaultKey. (opts): Handle oEncryptToDefaultKey. (main): Likewise. * g10/options.h (opt): Add field encrypt_to_default_key. -- Signed-off-by: Neal H. Walfield <[email protected]> GnuPG-bug-id: 807
Diffstat (limited to '')
-rw-r--r--doc/gpg.texi5
-rw-r--r--g10/getkey.c2
-rw-r--r--g10/gpg.c19
-rw-r--r--g10/keydb.h4
-rw-r--r--g10/options.h1
5 files changed, 30 insertions, 1 deletions
diff --git a/doc/gpg.texi b/doc/gpg.texi
index efbeef206..246b441bd 100644
--- a/doc/gpg.texi
+++ b/doc/gpg.texi
@@ -1916,6 +1916,11 @@ recipients given either by use of @option{--recipient} or by the asked user id.
No trust checking is performed for these user ids and even disabled
keys can be used.
+@item --encrypt-to-default-key
+@opindex encrypt-to-default-key
+If the default secret key is taken from @option{--default-key}, then
+also encrypt to that key.
+
@item --no-encrypt-to
@opindex no-encrypt-to
Disable the use of all @option{--encrypt-to} and
diff --git a/g10/getkey.c b/g10/getkey.c
index d3ce7d23f..b4086a270 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -1121,7 +1121,7 @@ get_pubkey_byfprint_fast (PKT_public_key * pk,
return 0;
}
-static const char *
+const char *
parse_def_secret_key (ctrl_t ctrl)
{
KEYDB_HANDLE hd = NULL;
diff --git a/g10/gpg.c b/g10/gpg.c
index e61f90dd9..7338ac91c 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -303,6 +303,7 @@ enum cmd_and_opt_values
oEncryptTo,
oHiddenEncryptTo,
oNoEncryptTo,
+ oEncryptToDefaultKey,
oLoggerFD,
oLoggerFile,
oUtf8Strings,
@@ -500,6 +501,7 @@ static ARGPARSE_OPTS opts[] = {
ARGPARSE_s_s (oEncryptTo, "encrypt-to", "@"),
ARGPARSE_s_n (oNoEncryptTo, "no-encrypt-to", "@"),
ARGPARSE_s_s (oHiddenEncryptTo, "hidden-encrypt-to", "@"),
+ ARGPARSE_s_n (oEncryptToDefaultKey, "encrypt-to-default-key", "@"),
ARGPARSE_s_s (oLocalUser, "local-user",
N_("|USER-ID|use USER-ID to sign or decrypt")),
@@ -2776,6 +2778,9 @@ main (int argc, char **argv)
sl = add_to_strlist2( &remusr, pargs.r.ret_str, utf8_strings );
sl->flags = 1|2;
break;
+ case oEncryptToDefaultKey:
+ opt.encrypt_to_default_key = 1;
+ break;
case oRecipient: /* store the recipient */
add_to_strlist2( &remusr, pargs.r.ret_str, utf8_strings );
any_explicit_recipient = 1;
@@ -3727,6 +3732,20 @@ main (int argc, char **argv)
break;
}
+ if (opt.encrypt_to_default_key)
+ {
+ const char *default_key = parse_def_secret_key (ctrl);
+ if (default_key)
+ {
+ sl = add_to_strlist2 (&remusr, default_key, utf8_strings);
+ sl->flags = 1;
+ }
+ else if (opt.def_secret_key)
+ log_info (_("--encrypt-to-default-key specified, but no valid default keys specified.\n"));
+ else
+ log_info (_("--encrypt-to-default-key specified, but --default-key not specified.\n"));
+ }
+
/* The command dispatcher. */
switch( cmd )
{
diff --git a/g10/keydb.h b/g10/keydb.h
index 7d14fb8a0..76136c156 100644
--- a/g10/keydb.h
+++ b/g10/keydb.h
@@ -582,6 +582,10 @@ int get_pubkey_byfprint_fast (PKT_public_key *pk,
with the specified key id. */
int have_secret_key_with_kid (u32 *keyid);
+/* Parse the --default-key parameter. Returns the last key (in terms
+ of when the option is given) that is available. */
+const char *parse_def_secret_key (ctrl_t ctrl);
+
/* Look up a secret key.
If PK is not NULL, the public key of the first result is returned
diff --git a/g10/options.h b/g10/options.h
index 7485985e8..bc92dd746 100644
--- a/g10/options.h
+++ b/g10/options.h
@@ -175,6 +175,7 @@ struct
int no_mdc_warn;
char *temp_dir;
int no_encrypt_to;
+ int encrypt_to_default_key;
int interactive;
struct notation *sig_notations;
struct notation *cert_notations;