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 <neal@g10code.com>
GnuPG-bug-id: 807
This commit is contained in:
Neal H. Walfield 2015-11-03 23:39:46 +01:00
parent e16d7168c5
commit de9b234015
5 changed files with 30 additions and 1 deletions

View File

@ -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

View File

@ -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;

View File

@ -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 )
{

View File

@ -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

View File

@ -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;