mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-18 14:17:03 +01:00
gpg: New option --sender
* g10/options.h (struct opt): Add field 'sender_list'. * g10/gpg.c: Include mbox-util.h. (oSender): New. (opts): Add option "--sender". (main): Parse option. -- This option will eventually be used for more advanced purposes. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
b5d63e81d5
commit
de6e3217cd
@ -2087,6 +2087,15 @@ Remove all entries from the @option{--group} list.
|
|||||||
Use @var{name} as the key to sign with. Note that this option overrides
|
Use @var{name} as the key to sign with. Note that this option overrides
|
||||||
@option{--default-key}.
|
@option{--default-key}.
|
||||||
|
|
||||||
|
@item --sender @var{mbox}
|
||||||
|
@opindex sender
|
||||||
|
This option has two purposes. @var{mbox} must either be a complete
|
||||||
|
user id with a proper mail address or just a mail address. When
|
||||||
|
creating a signature this option tells gpg the user id of a key used
|
||||||
|
to make a signature if the key was not directly specified by a user
|
||||||
|
id. When verifying a signature the @var{mbox} is used to restrict the
|
||||||
|
information printed by the TOFU code to matching user ids.
|
||||||
|
|
||||||
@item --try-secret-key @var{name}
|
@item --try-secret-key @var{name}
|
||||||
@opindex try-secret-key
|
@opindex try-secret-key
|
||||||
For hidden recipients GPG needs to know the keys to use for trial
|
For hidden recipients GPG needs to know the keys to use for trial
|
||||||
|
16
g10/gpg.c
16
g10/gpg.c
@ -60,6 +60,7 @@
|
|||||||
#include "call-dirmngr.h"
|
#include "call-dirmngr.h"
|
||||||
#include "tofu.h"
|
#include "tofu.h"
|
||||||
#include "../common/init.h"
|
#include "../common/init.h"
|
||||||
|
#include "../common/mbox-util.h"
|
||||||
#include "../common/shareddefs.h"
|
#include "../common/shareddefs.h"
|
||||||
|
|
||||||
#if defined(HAVE_DOSISH_SYSTEM) || defined(__CYGWIN__)
|
#if defined(HAVE_DOSISH_SYSTEM) || defined(__CYGWIN__)
|
||||||
@ -406,6 +407,7 @@ enum cmd_and_opt_values
|
|||||||
oUnwrap,
|
oUnwrap,
|
||||||
oOnlySignTextIDs,
|
oOnlySignTextIDs,
|
||||||
oDisableSignerUID,
|
oDisableSignerUID,
|
||||||
|
oSender,
|
||||||
|
|
||||||
oNoop
|
oNoop
|
||||||
};
|
};
|
||||||
@ -525,6 +527,7 @@ static ARGPARSE_OPTS opts[] = {
|
|||||||
ARGPARSE_s_n (oEncryptToDefaultKey, "encrypt-to-default-key", "@"),
|
ARGPARSE_s_n (oEncryptToDefaultKey, "encrypt-to-default-key", "@"),
|
||||||
ARGPARSE_s_s (oLocalUser, "local-user",
|
ARGPARSE_s_s (oLocalUser, "local-user",
|
||||||
N_("|USER-ID|use USER-ID to sign or decrypt")),
|
N_("|USER-ID|use USER-ID to sign or decrypt")),
|
||||||
|
ARGPARSE_s_s (oSender, "sender", "@"),
|
||||||
|
|
||||||
ARGPARSE_s_s (oTrySecretKey, "try-secret-key", "@"),
|
ARGPARSE_s_s (oTrySecretKey, "try-secret-key", "@"),
|
||||||
|
|
||||||
@ -2907,6 +2910,19 @@ main (int argc, char **argv)
|
|||||||
if (configfp)
|
if (configfp)
|
||||||
sl->flags |= PK_LIST_CONFIG;
|
sl->flags |= PK_LIST_CONFIG;
|
||||||
break;
|
break;
|
||||||
|
case oSender:
|
||||||
|
{
|
||||||
|
char *mbox = mailbox_from_userid (pargs.r.ret_str);
|
||||||
|
if (!mbox)
|
||||||
|
log_error (_("\"%s\" is not a proper mail address\n"),
|
||||||
|
pargs.r.ret_str);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
add_to_strlist (&opt.sender_list, mbox);
|
||||||
|
xfree (mbox);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case oCompress:
|
case oCompress:
|
||||||
/* this is the -z command line option */
|
/* this is the -z command line option */
|
||||||
opt.compress_level = opt.bz2_compress_level = pargs.r.ret_int;
|
opt.compress_level = opt.bz2_compress_level = pargs.r.ret_int;
|
||||||
|
@ -101,6 +101,10 @@ struct
|
|||||||
int def_recipient_self;
|
int def_recipient_self;
|
||||||
strlist_t secret_keys_to_try;
|
strlist_t secret_keys_to_try;
|
||||||
|
|
||||||
|
/* A list of mail addresses (addr-spec) provided by the user with
|
||||||
|
* the option --sender. */
|
||||||
|
strlist_t sender_list;
|
||||||
|
|
||||||
int def_cert_level;
|
int def_cert_level;
|
||||||
int min_cert_level;
|
int min_cert_level;
|
||||||
int ask_cert_level;
|
int ask_cert_level;
|
||||||
|
15
g10/sign.c
15
g10/sign.c
@ -158,6 +158,21 @@ mk_notation_policy_etc (PKT_signature *sig,
|
|||||||
build_sig_subpkt (sig, SIGSUBPKT_SIGNERS_UID, mbox, strlen (mbox));
|
build_sig_subpkt (sig, SIGSUBPKT_SIGNERS_UID, mbox, strlen (mbox));
|
||||||
xfree (mbox);
|
xfree (mbox);
|
||||||
}
|
}
|
||||||
|
else if (opt.sender_list)
|
||||||
|
{
|
||||||
|
/* If a list of --sender was given we scan that list and use
|
||||||
|
* the first one matching a user id of the current key. */
|
||||||
|
|
||||||
|
/* FIXME: We need to get the list of user ids for the PKSK
|
||||||
|
* packet. That requires either a function to look it up
|
||||||
|
* again or we need to extend the key packet struct to link
|
||||||
|
* to the primary key which in turn could link to the user
|
||||||
|
* ids. Too much of a change right now. Let's take just
|
||||||
|
* one from the supplied list and hope that the caller
|
||||||
|
* passed a matching one. */
|
||||||
|
build_sig_subpkt (sig, SIGSUBPKT_SIGNERS_UID,
|
||||||
|
opt.sender_list->d, strlen (opt.sender_list->d));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user