1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-09-21 15:01:41 +02:00

gpg: New option --proc-all-sigs

* g10/options.h (flags): Add proc_all_sigs.
* g10/mainproc.c (check_sig_and_print): Do not stop signature checking
if this new option is used.
* g10/gpg.c (oProcAllSigs): New.
(opts): Add "proc-all-sigs".
(main): Set it.
--

GnuPG-bug-id: 7261
Backported-from-master: 1eb382fb1f
This commit is contained in:
Werner Koch 2024-08-23 11:27:58 +02:00
parent 92667aa8c2
commit cb739bb2a5
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
5 changed files with 22 additions and 1 deletions

2
NEWS
View File

@ -20,6 +20,8 @@ Noteworthy changes in version 2.4.6 (unreleased)
* gpg: ADSKs are now configurable for new keys. [T6882] * gpg: ADSKs are now configurable for new keys. [T6882]
* gpg: New option --proc-all-sigs. [T7261]
* gpgsm: Emit user IDs with an empty Subject also in colon mode. * gpgsm: Emit user IDs with an empty Subject also in colon mode.
[T7171] [T7171]

View File

@ -264,6 +264,11 @@ out the actual signed data, but there are other pitfalls with this
format as well. It is suggested to avoid cleartext signatures in format as well. It is suggested to avoid cleartext signatures in
favor of detached signatures. favor of detached signatures.
Note: With option @option{--batch} he verification of signatures stops
at the first bad signature. This is a safe default for unattended
processing but sometimes a status for all signatures is needed. To
override this early bailout use the option @option{--proc-all-sigs}.
Note: To check whether a file was signed by a certain key the option Note: To check whether a file was signed by a certain key the option
@option{--assert-signer} can be used. As an alternative the @option{--assert-signer} can be used. As an alternative the
@command{gpgv} tool can be used. @command{gpgv} is designed to @command{gpgv} tool can be used. @command{gpgv} is designed to
@ -1371,6 +1376,12 @@ Assume "yes" on most questions. Should not be used in an option file.
Assume "no" on most questions. Should not be used in an option file. Assume "no" on most questions. Should not be used in an option file.
@item --proc-all-sigs
@opindex proc-all-sigs
This option overrides the behaviour of the @option{--batch} option to
stop signature verification at the first bad signatures.
@item --list-filter @{select=@var{expr}@} @item --list-filter @{select=@var{expr}@}
@opindex list-filter @opindex list-filter
A list filter can be used to output only certain keys during key A list filter can be used to output only certain keys during key

View File

@ -455,6 +455,7 @@ enum cmd_and_opt_values
oAssertSigner, oAssertSigner,
oAssertPubkeyAlgo, oAssertPubkeyAlgo,
oKbxBufferSize, oKbxBufferSize,
oProcAllSigs,
oNoop oNoop
}; };
@ -902,6 +903,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_n (oBatch, "batch", "@"), ARGPARSE_s_n (oBatch, "batch", "@"),
ARGPARSE_s_n (oNoBatch, "no-batch", "@"), ARGPARSE_s_n (oNoBatch, "no-batch", "@"),
ARGPARSE_s_n (oProcAllSigs, "proc-all-sigs", "@"),
ARGPARSE_s_n (oAnswerYes, "yes", "@"), ARGPARSE_s_n (oAnswerYes, "yes", "@"),
ARGPARSE_s_n (oAnswerNo, "no", "@"), ARGPARSE_s_n (oAnswerNo, "no", "@"),
ARGPARSE_s_i (oStatusFD, "status-fd", "@"), ARGPARSE_s_i (oStatusFD, "status-fd", "@"),
@ -2802,6 +2804,10 @@ main (int argc, char **argv)
nogreeting = 1; nogreeting = 1;
break; break;
case oProcAllSigs:
opt.flags.proc_all_sigs = 1;
break;
case oUseAgent: /* Dummy. */ case oUseAgent: /* Dummy. */
break; break;

View File

@ -2549,7 +2549,7 @@ check_sig_and_print (CTX c, kbnode_t node)
release_kbnode( keyblock ); release_kbnode( keyblock );
if (rc) if (rc)
g10_errors_seen = 1; g10_errors_seen = 1;
if (opt.batch && rc) if (opt.batch && rc && !opt.flags.proc_all_sigs)
g10_exit (1); g10_exit (1);
} }
else /* Error checking the signature. (neither Good nor Bad). */ else /* Error checking the signature. (neither Good nor Bad). */

View File

@ -305,6 +305,8 @@ struct
/* Fail if an operation can't be done in the requested compliance /* Fail if an operation can't be done in the requested compliance
* mode. */ * mode. */
unsigned int require_compliance:1; unsigned int require_compliance:1;
/* Process all signatures even in batch mode. */
unsigned int proc_all_sigs:1;
} flags; } flags;
/* Linked list of ways to find a key if the key isn't on the local /* Linked list of ways to find a key if the key isn't on the local