WSL2-Linux-Kernel/crypto/asymmetric_keys
Eric Biggers a1e55db51a KEYS: asymmetric: properly validate hash_algo and encoding
commit 590bfb57b2 upstream.

It is insecure to allow arbitrary hash algorithms and signature
encodings to be used with arbitrary signature algorithms.  Notably,
ECDSA, ECRDSA, and SM2 all sign/verify raw hash values and don't
disambiguate between different hash algorithms like RSA PKCS#1 v1.5
padding does.  Therefore, they need to be restricted to certain sets of
hash algorithms (ideally just one, but in practice small sets are used).
Additionally, the encoding is an integral part of modern signature
algorithms, and is not supposed to vary.

Therefore, tighten the checks of hash_algo and encoding done by
software_key_determine_akcipher().

Also rearrange the parameters to software_key_determine_akcipher() to
put the public_key first, as this is the most important parameter and it
often determines everything else.

Fixes: 299f561a66 ("x509: Add support for parsing x509 certs with ECDSA keys")
Fixes: 2155256396 ("X.509: support OSCCA SM2-with-SM3 certificate verification")
Fixes: 0d7a78643f ("crypto: ecrdsa - add EC-RDSA (GOST 34.10) algorithm")
Cc: stable@vger.kernel.org
Tested-by: Stefan Berger <stefanb@linux.ibm.com>
Tested-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Vitaly Chikunov <vt@altlinux.org>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-08 14:22:51 +02:00
..
Kconfig
Makefile
asym_tpm.c
asymmetric_keys.h
asymmetric_type.c
mscode.asn1
mscode_parser.c
pkcs7.asn1
pkcs7_key_type.c
pkcs7_parser.c certs: Add support for using elliptic curve keys for signing modules 2021-08-23 19:55:42 +03:00
pkcs7_parser.h
pkcs7_trust.c
pkcs7_verify.c KEYS: asymmetric: enforce that sig algo matches key algo 2022-04-08 14:22:51 +02:00
pkcs8.asn1
pkcs8_parser.c
public_key.c KEYS: asymmetric: properly validate hash_algo and encoding 2022-04-08 14:22:51 +02:00
restrict.c keys: Update comment for restrict_link_by_key_or_keyring_chain 2021-02-16 10:40:27 +02:00
signature.c
tpm.asn1
tpm_parser.c
verify_pefile.c
verify_pefile.h
x509.asn1
x509_akid.asn1
x509_cert_parser.c x509: Add OID for NIST P384 and extend parser for it 2021-03-26 19:41:59 +11:00
x509_parser.h
x509_public_key.c KEYS: asymmetric: enforce that sig algo matches key algo 2022-04-08 14:22:51 +02:00