mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Make the use of "--verify FILE" for detached sigs harder.
* g10/openfile.c (open_sigfile): Factor some code out to ... (get_matching_datafile): new function. * g10/plaintext.c (hash_datafiles): Do not try to find matching file in batch mode. * g10/mainproc.c (check_sig_and_print): Print a warning if a possibly matching data file is not used by a standard signatures. -- Allowing to use the abbreviated form for detached signatures is a long standing bug which has only been noticed by the public with the release of 2.1.0. :-( What we do is to remove the ability to check detached signature in --batch using the one file abbreviated mode. This should exhibit problems in scripts which use this insecure practice. We also print a warning if a matching data file exists but was not considered because the detached signature was actually a standard signature: gpgv: Good signature from "Werner Koch (dist sig)" gpgv: WARNING: not a detached signature; \ file 'gnupg-2.1.0.tar.bz2' was NOT verified! We can only print a warning because it is possible that a standard signature is indeed to be verified but by coincidence a file with a matching name is stored alongside the standard signature. Reported-by: Simon Nicolussi (to gnupg-users on Nov 7) Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
22748338da
commit
69384568f6
5 changed files with 125 additions and 51 deletions
|
@ -607,10 +607,8 @@ leave:
|
|||
|
||||
|
||||
|
||||
/****************
|
||||
* Hash the given files and append the hash to hash context md.
|
||||
* If FILES is NULL, hash stdin.
|
||||
*/
|
||||
/* Hash the given files and append the hash to hash contexts MD and
|
||||
* MD2. If FILES is NULL, stdin is hashed. */
|
||||
int
|
||||
hash_datafiles (gcry_md_hd_t md, gcry_md_hd_t md2, strlist_t files,
|
||||
const char *sigfilename, int textmode)
|
||||
|
@ -623,15 +621,22 @@ hash_datafiles (gcry_md_hd_t md, gcry_md_hd_t md2, strlist_t files,
|
|||
|
||||
if (!files)
|
||||
{
|
||||
/* check whether we can open the signed material */
|
||||
fp = open_sigfile (sigfilename, pfx);
|
||||
if (fp)
|
||||
{
|
||||
do_hash (md, md2, fp, textmode);
|
||||
iobuf_close (fp);
|
||||
release_progress_context (pfx);
|
||||
return 0;
|
||||
}
|
||||
/* Check whether we can open the signed material. We avoid
|
||||
trying to open a file if run in batch mode. This assumed
|
||||
data file for a sig file feature is just a convenience thing
|
||||
for the command line and the user needs to read possible
|
||||
warning messages. */
|
||||
if (!opt.batch)
|
||||
{
|
||||
fp = open_sigfile (sigfilename, pfx);
|
||||
if (fp)
|
||||
{
|
||||
do_hash (md, md2, fp, textmode);
|
||||
iobuf_close (fp);
|
||||
release_progress_context (pfx);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
log_error (_("no signed data\n"));
|
||||
release_progress_context (pfx);
|
||||
return gpg_error (GPG_ERR_NO_DATA);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue