]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
crypto: hisilicon/sec2 - fix for aead auth key length
authorWenkai Lin <linwenkai6@hisilicon.com>
Wed, 5 Feb 2025 03:56:26 +0000 (11:56 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:37:32 +0000 (14:37 +0200)
[ Upstream commit 1b284ffc30b02808a0de698667cbcf5ce5f9144e ]

According to the HMAC RFC, the authentication key
can be 0 bytes, and the hardware can handle this
scenario. Therefore, remove the incorrect validation
for this case.

Fixes: 2f072d75d1ab ("crypto: hisilicon - Add aead support on SEC2")
Signed-off-by: Wenkai Lin <linwenkai6@hisilicon.com>
Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/crypto/hisilicon/sec2/sec_crypto.c

index 789e566b3bf90bb3742bf87dac63c1e7d622a717..d6727b8ff582b63cee7795b6e56cdf3646c33468 100644 (file)
@@ -1089,11 +1089,6 @@ static int sec_aead_auth_set_key(struct sec_auth_ctx *ctx,
        struct crypto_shash *hash_tfm = ctx->hash_tfm;
        int blocksize, digestsize, ret;
 
-       if (!keys->authkeylen) {
-               pr_err("hisi_sec2: aead auth key error!\n");
-               return -EINVAL;
-       }
-
        blocksize = crypto_shash_blocksize(hash_tfm);
        digestsize = crypto_shash_digestsize(hash_tfm);
        if (keys->authkeylen > blocksize) {
@@ -1105,7 +1100,8 @@ static int sec_aead_auth_set_key(struct sec_auth_ctx *ctx,
                }
                ctx->a_key_len = digestsize;
        } else {
-               memcpy(ctx->a_key, keys->authkey, keys->authkeylen);
+               if (keys->authkeylen)
+                       memcpy(ctx->a_key, keys->authkey, keys->authkeylen);
                ctx->a_key_len = keys->authkeylen;
        }