mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: New options --recipient-file and --hidden-recipient-file.
* g10/gpg.c (oRecipientFile, oHiddenRecipientFile): New. (opts): Add options --recipient-file and --hidden-recipient-file. (main): Implement them. Also remove duplicate code from similar options. * g10/keydb.h (PK_LIST_FROM_FILE): New. (PK_LIST_SHIFT): Bump up. * g10/pkclist.c (expand_group): Take care of PK_LIST_FROM_FILE. (find_and_check_key): Add and implement arg FROM_FILE. (build_pk_list): Pass new value for new arg. * g10/getkey.c (get_pubkey_fromfile): New. * g10/gpgv.c (read_key_from_file): New stub. * g10/test-stubs.c (read_key_from_file): New stub. * g10/server.c (cmd_recipient): Add flag --file. * g10/import.c (read_key_from_file): New. * tests/openpgp/defs.scm (key-file1): New. (key-file2): New. * tests/openpgp/setup.scm: Add their private keys and import the key-file1. * tests/openpgp/encrypt.scm: Add new test. -- Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
073be51a86
commit
a479804c86
13 changed files with 330 additions and 82 deletions
54
g10/gpg.c
54
g10/gpg.c
|
@ -81,6 +81,8 @@ enum cmd_and_opt_values
|
|||
aSym = 'c',
|
||||
aDecrypt = 'd',
|
||||
aEncr = 'e',
|
||||
oRecipientFile = 'f',
|
||||
oHiddenRecipientFile = 'F',
|
||||
oInteractive = 'i',
|
||||
aListKeys = 'k',
|
||||
oDryRun = 'n',
|
||||
|
@ -506,6 +508,8 @@ static ARGPARSE_OPTS opts[] = {
|
|||
|
||||
ARGPARSE_s_s (oRecipient, "recipient", N_("|USER-ID|encrypt for USER-ID")),
|
||||
ARGPARSE_s_s (oHiddenRecipient, "hidden-recipient", "@"),
|
||||
ARGPARSE_s_s (oRecipientFile, "recipient-file", "@"),
|
||||
ARGPARSE_s_s (oHiddenRecipientFile, "hidden-recipient-file", "@"),
|
||||
ARGPARSE_s_s (oRecipient, "remote-user", "@"), /* (old option name) */
|
||||
ARGPARSE_s_s (oDefRecipient, "default-recipient", "@"),
|
||||
ARGPARSE_s_n (oDefRecipientSelf, "default-recipient-self", "@"),
|
||||
|
@ -2838,38 +2842,46 @@ main (int argc, char **argv)
|
|||
else
|
||||
opt.s2k_count = 0; /* Auto-calibrate when needed. */
|
||||
break;
|
||||
case oNoEncryptTo: opt.no_encrypt_to = 1; break;
|
||||
case oEncryptTo: /* store the recipient in the second list */
|
||||
sl = add_to_strlist2( &remusr, pargs.r.ret_str, utf8_strings );
|
||||
sl->flags = ((pargs.r_opt << PK_LIST_SHIFT) | PK_LIST_ENCRYPT_TO);
|
||||
if (configfp)
|
||||
sl->flags |= PK_LIST_CONFIG;
|
||||
break;
|
||||
case oHiddenEncryptTo: /* store the recipient in the second list */
|
||||
sl = add_to_strlist2( &remusr, pargs.r.ret_str, utf8_strings );
|
||||
sl->flags = ((pargs.r_opt << PK_LIST_SHIFT)
|
||||
| PK_LIST_ENCRYPT_TO|PK_LIST_HIDDEN);
|
||||
if (configfp)
|
||||
sl->flags |= PK_LIST_CONFIG;
|
||||
break;
|
||||
case oEncryptToDefaultKey:
|
||||
opt.encrypt_to_default_key = configfp ? 2 : 1;
|
||||
break;
|
||||
case oRecipient: /* store the recipient */
|
||||
|
||||
case oRecipient:
|
||||
case oHiddenRecipient:
|
||||
case oRecipientFile:
|
||||
case oHiddenRecipientFile:
|
||||
/* Store the recipient. Note that we also store the
|
||||
* option as private data in the flags. This is achieved
|
||||
* by shifting the option value to the left so to keep
|
||||
* enough space for the flags. */
|
||||
sl = add_to_strlist2( &remusr, pargs.r.ret_str, utf8_strings );
|
||||
sl->flags = (pargs.r_opt << PK_LIST_SHIFT);
|
||||
if (configfp)
|
||||
sl->flags |= PK_LIST_CONFIG;
|
||||
if (pargs.r_opt == oHiddenRecipient
|
||||
|| pargs.r_opt == oHiddenRecipientFile)
|
||||
sl->flags |= PK_LIST_HIDDEN;
|
||||
if (pargs.r_opt == oRecipientFile
|
||||
|| pargs.r_opt == oHiddenRecipientFile)
|
||||
sl->flags |= PK_LIST_FROM_FILE;
|
||||
any_explicit_recipient = 1;
|
||||
break;
|
||||
case oHiddenRecipient: /* store the recipient with a flag */
|
||||
|
||||
case oEncryptTo:
|
||||
case oHiddenEncryptTo:
|
||||
/* Store an additional recipient. */
|
||||
sl = add_to_strlist2( &remusr, pargs.r.ret_str, utf8_strings );
|
||||
sl->flags = ((pargs.r_opt << PK_LIST_SHIFT) | PK_LIST_HIDDEN);
|
||||
sl->flags = ((pargs.r_opt << PK_LIST_SHIFT) | PK_LIST_ENCRYPT_TO);
|
||||
if (configfp)
|
||||
sl->flags |= PK_LIST_CONFIG;
|
||||
any_explicit_recipient = 1;
|
||||
if (pargs.r_opt == oHiddenEncryptTo)
|
||||
sl->flags |= PK_LIST_HIDDEN;
|
||||
break;
|
||||
|
||||
case oNoEncryptTo:
|
||||
opt.no_encrypt_to = 1;
|
||||
break;
|
||||
case oEncryptToDefaultKey:
|
||||
opt.encrypt_to_default_key = configfp ? 2 : 1;
|
||||
break;
|
||||
|
||||
case oTrySecretKey:
|
||||
add_to_strlist2 (&opt.secret_keys_to_try,
|
||||
pargs.r.ret_str, utf8_strings);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue