KEYS: asymmetric: Fix sign/verify on pkcs1pad without a hash
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 16 Oct 2023 08:35:36 +0000 (16:35 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 18 Oct 2023 04:27:10 +0000 (12:27 +0800)
The new sign/verify code broke the case of pkcs1pad without a
hash algorithm.  Fix it by setting issig correctly for this case.

Fixes: 63ba4d67594a ("KEYS: asymmetric: Use new crypto interface without scatterlists")
Cc: stable@vger.kernel.org # v6.5
Reported-by: Denis Kenzior <denkenz@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Tested-by: Denis Kenzior <denkenz@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/asymmetric_keys/public_key.c

index abeecb8..1dcab27 100644 (file)
@@ -81,14 +81,13 @@ software_key_determine_akcipher(const struct public_key *pkey,
                 * RSA signatures usually use EMSA-PKCS1-1_5 [RFC3447 sec 8.2].
                 */
                if (strcmp(encoding, "pkcs1") == 0) {
+                       *sig = op == kernel_pkey_sign ||
+                              op == kernel_pkey_verify;
                        if (!hash_algo) {
-                               *sig = false;
                                n = snprintf(alg_name, CRYPTO_MAX_ALG_NAME,
                                             "pkcs1pad(%s)",
                                             pkey->pkey_algo);
                        } else {
-                               *sig = op == kernel_pkey_sign ||
-                                      op == kernel_pkey_verify;
                                n = snprintf(alg_name, CRYPTO_MAX_ALG_NAME,
                                             "pkcs1pad(%s,%s)",
                                             pkey->pkey_algo, hash_algo);