]> 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:39:21 +0000 (14:39 +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 0d2917b3e81584fd3d2ce2271fecb646b152b885..8605cb3cae92cd9f730cf7dc49b5549e993fd087 100644 (file)
@@ -1085,11 +1085,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) {
@@ -1101,7 +1096,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;
        }