Patch "crypto: akcipher - default implementation for setting a private key" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    crypto: akcipher - default implementation for setting a private key

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     crypto-akcipher-default-implementation-for-setting-a.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 92f1623446f766874da499bb227e73aa39c8bf32
Author: Ignat Korchagin <ignat@xxxxxxxxxxxxxx>
Date:   Wed Aug 31 19:37:06 2022 +0100

    crypto: akcipher - default implementation for setting a private key
    
    [ Upstream commit bc155c6c188c2f0c5749993b1405673d25a80389 ]
    
    Changes from v1:
      * removed the default implementation from set_pub_key: it is assumed that
        an implementation must always have this callback defined as there are
        no use case for an algorithm, which doesn't need a public key
    
    Many akcipher implementations (like ECDSA) support only signature
    verifications, so they don't have all callbacks defined.
    
    Commit 78a0324f4a53 ("crypto: akcipher - default implementations for
    request callbacks") introduced default callbacks for sign/verify
    operations, which just return an error code.
    
    However, these are not enough, because before calling sign the caller would
    likely call set_priv_key first on the instantiated transform (as the
    in-kernel testmgr does). This function does not have a default stub, so the
    kernel crashes, when trying to set a private key on an akcipher, which
    doesn't support signature generation.
    
    I've noticed this, when trying to add a KAT vector for ECDSA signature to
    the testmgr.
    
    With this patch the testmgr returns an error in dmesg (as it should)
    instead of crashing the kernel NULL ptr dereference.
    
    Fixes: 78a0324f4a53 ("crypto: akcipher - default implementations for request callbacks")
    Signed-off-by: Ignat Korchagin <ignat@xxxxxxxxxxxxxx>
    Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/crypto/akcipher.c b/crypto/akcipher.c
index f866085c8a4a..ab975a420e1e 100644
--- a/crypto/akcipher.c
+++ b/crypto/akcipher.c
@@ -120,6 +120,12 @@ static int akcipher_default_op(struct akcipher_request *req)
 	return -ENOSYS;
 }
 
+static int akcipher_default_set_key(struct crypto_akcipher *tfm,
+				     const void *key, unsigned int keylen)
+{
+	return -ENOSYS;
+}
+
 int crypto_register_akcipher(struct akcipher_alg *alg)
 {
 	struct crypto_alg *base = &alg->base;
@@ -132,6 +138,8 @@ int crypto_register_akcipher(struct akcipher_alg *alg)
 		alg->encrypt = akcipher_default_op;
 	if (!alg->decrypt)
 		alg->decrypt = akcipher_default_op;
+	if (!alg->set_priv_key)
+		alg->set_priv_key = akcipher_default_set_key;
 
 	akcipher_prepare_alg(alg);
 	return crypto_register_alg(base);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux