mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
sm,dirmngr: Restrict allowed parameters used with rsaPSS.
* sm/certcheck.c (extract_pss_params): Check the used PSS params. * dirmngr/crlcache.c (finish_sig_check): Ditto. * dirmngr/validate.c (check_cert_sig): Ditto. -- GnuPG-bug-id: 4538 # ------------------------ >8 ------------------------ See https://www.metzdowd.com/pipermail/cryptography/2019-November/035449.html Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
24d563749f
commit
ddc74f50d4
3 changed files with 87 additions and 2 deletions
|
@ -1731,6 +1731,29 @@ finish_sig_check (ksba_crl_t crl, gcry_md_hd_t md, int algo,
|
|||
algo, hashalgo);
|
||||
return gpg_error (GPG_ERR_INV_CRL);
|
||||
}
|
||||
/* Add some restrictions; see ../sm/certcheck.c for details. */
|
||||
switch (algo)
|
||||
{
|
||||
case GCRY_MD_SHA1:
|
||||
case GCRY_MD_SHA256:
|
||||
case GCRY_MD_SHA384:
|
||||
case GCRY_MD_SHA512:
|
||||
case GCRY_MD_SHA3_256:
|
||||
case GCRY_MD_SHA3_384:
|
||||
case GCRY_MD_SHA3_512:
|
||||
break;
|
||||
default:
|
||||
log_error ("PSS hash algorithm '%s' rejected\n",
|
||||
gcry_md_algo_name (algo));
|
||||
return gpg_error (GPG_ERR_DIGEST_ALGO);
|
||||
}
|
||||
|
||||
if (gcry_md_get_algo_dlen (algo) != saltlen)
|
||||
{
|
||||
log_error ("PSS hash algorithm '%s' rejected due to salt length %u\n",
|
||||
gcry_md_algo_name (algo), saltlen);
|
||||
return gpg_error (GPG_ERR_DIGEST_ALGO);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1014,7 +1014,31 @@ check_cert_sig (ksba_cert_t issuer_cert, ksba_cert_t cert)
|
|||
gcry_sexp_release (s_sig);
|
||||
return gpg_error (GPG_ERR_DIGEST_ALGO);
|
||||
}
|
||||
/* log_debug ("PSS hash=%d saltlen=%u\n", algo, saltlen); */
|
||||
/* Add some restrictions; see ../sm/certcheck.c for details. */
|
||||
switch (algo)
|
||||
{
|
||||
case GCRY_MD_SHA1:
|
||||
case GCRY_MD_SHA256:
|
||||
case GCRY_MD_SHA384:
|
||||
case GCRY_MD_SHA512:
|
||||
case GCRY_MD_SHA3_256:
|
||||
case GCRY_MD_SHA3_384:
|
||||
case GCRY_MD_SHA3_512:
|
||||
break;
|
||||
default:
|
||||
log_error ("PSS hash algorithm '%s' rejected\n",
|
||||
gcry_md_algo_name (algo));
|
||||
gcry_sexp_release (s_sig);
|
||||
return gpg_error (GPG_ERR_DIGEST_ALGO);
|
||||
}
|
||||
|
||||
if (gcry_md_get_algo_dlen (algo) != saltlen)
|
||||
{
|
||||
log_error ("PSS hash algorithm '%s' rejected due to salt length %u\n",
|
||||
gcry_md_algo_name (algo), saltlen);
|
||||
gcry_sexp_release (s_sig);
|
||||
return gpg_error (GPG_ERR_DIGEST_ALGO);
|
||||
}
|
||||
}
|
||||
|
||||
algo_name = hash_algo_to_string (algo);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue