{"id":2197949,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2197949/?format=json","project":{"id":12,"url":"http://patchwork.ozlabs.org/api/1.0/projects/12/?format=json","name":"Linux CIFS Client","link_name":"linux-cifs-client","list_id":"linux-cifs.vger.kernel.org","list_email":"linux-cifs@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260218213501.136844-3-ebiggers@kernel.org>","date":"2026-02-18T21:34:48","name":"[02/15] crypto: aes - Add cmac, xcbc, and cbcmac algorithms using library","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"ec376d899eeb2b6542dd4939179cbf24b752f974","submitter":{"id":74690,"url":"http://patchwork.ozlabs.org/api/1.0/people/74690/?format=json","name":"Eric Biggers","email":"ebiggers@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-cifs-client/patch/20260218213501.136844-3-ebiggers@kernel.org/mbox/","series":[{"id":492621,"url":"http://patchwork.ozlabs.org/api/1.0/series/492621/?format=json","date":"2026-02-18T21:34:46","name":"AES-CMAC library","version":1,"mbox":"http://patchwork.ozlabs.org/series/492621/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2197949/checks/","tags":{},"headers":{"Return-Path":"\n <linux-cifs+bounces-9443-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-cifs@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=UYQ3AI9B;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-cifs+bounces-9443-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"UYQ3AI9B\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fGVGw0Zk2z1xvS\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 19 Feb 2026 08:37:44 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 11A65301184F\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 18 Feb 2026 21:36:56 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 7E68B3019A4;\n\tWed, 18 Feb 2026 21:36:51 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 593232F6920;\n\tWed, 18 Feb 2026 21:36:51 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 9B66DC2BC87;\n\tWed, 18 Feb 2026 21:36:50 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771450611; cv=none;\n b=njgDNyEnoARfHs2+U0r4r3+8Gpa1J/urff5Gr1AGFBcxJw2OuAMhIIQuj0haiRKuDIZzPS3Ho/E+Azy4ooavCabfOS9QtFmxURtgyCdLhIOSqtrerpuRA85dtd3OkyFVCCBITIxcyrRvFJRX2/h3SoldPb2G6T6wTTsNoxef/P8=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771450611; c=relaxed/simple;\n\tbh=S4zQmtBxe0E3DIi0hm6e0ss7TJDmWjR02e2kDFr1lzc=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=nmFdqXTCg/nXSACamRjUzZotlCD0ds2eqmQ2TVSTF/fra/HOmtflubH8wSw3twHG3J8KNVNQegnTxdIF0eHj0vPOgHFnIYGn+DRwxOq5ApKdM6t5lU8CDl8NFX1WlwgEFDLSmoT1y8A5JYJsqB4OVQChXrBiwE+7CxdPL6yoRus=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=UYQ3AI9B; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1771450611;\n\tbh=S4zQmtBxe0E3DIi0hm6e0ss7TJDmWjR02e2kDFr1lzc=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=UYQ3AI9Bo8dGg0hMwROuintnVLzOqhK2vZI4c2yOwLofe1PQg6B/pItjzSqDpqS3I\n\t ZV2871TKNFtzdqmW8TE5YM9EXZ7HRE8OWvdgawxtqpdQ5m7f/s8uS2vg+U8FEf7ikf\n\t qcmc5aiVI4hhVHYMpjUEpv+HqJ13ZDr59hPhSR3Wla5Hw2htKzwRoxkQboT/b2SCBu\n\t fbuQn8dLFKNA49erokFxe3JaiwdRd64x25iZMsgTojSyxvkU7xbJJ6PXS5XwPszmVQ\n\t L1aCSsZQEX7m/YEgdFEU52qfbxDgSVR72hlpsVcMKI6DxiU2GhhwjD1XfT4D+YKp4s\n\t B2vB+9dxg1Hmg==","From":"Eric Biggers <ebiggers@kernel.org>","To":"linux-crypto@vger.kernel.org","Cc":"linux-kernel@vger.kernel.org,\n\tArd Biesheuvel <ardb@kernel.org>,\n\t\"Jason A . Donenfeld\" <Jason@zx2c4.com>,\n\tHerbert Xu <herbert@gondor.apana.org.au>,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-cifs@vger.kernel.org,\n\tlinux-wireless@vger.kernel.org,\n\tEric Biggers <ebiggers@kernel.org>","Subject":"[PATCH 02/15] crypto: aes - Add cmac, xcbc,\n and cbcmac algorithms using library","Date":"Wed, 18 Feb 2026 13:34:48 -0800","Message-ID":"<20260218213501.136844-3-ebiggers@kernel.org>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260218213501.136844-1-ebiggers@kernel.org>","References":"<20260218213501.136844-1-ebiggers@kernel.org>","Precedence":"bulk","X-Mailing-List":"linux-cifs@vger.kernel.org","List-Id":"<linux-cifs.vger.kernel.org>","List-Subscribe":"<mailto:linux-cifs+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-cifs+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit"},"content":"Update the \"aes\" module to implement \"cmac(aes)\", \"xcbc(aes)\", and\n\"cbcmac(aes)\" algorithms using the corresponding library functions, and\nregister these with the crypto_shash API.  Each algorithm is included\nonly if the corresponding existing kconfig option is enabled.\n\nThis allows the architecture-optimized implementations of these\nalgorithms to continue to be accessible via the crypto_shash API once\nthey are migrated into the library.\n\nFor \"xcbc(aes)\", I also fixed the bug where AES key lengths other than\n128 bits were allowed, so that this bug didn't have to be implemented in\nthe library.  The AES-XCBC-MAC specification (RFC 3566) is clear that\nkey lengths other than 128 bits MUST NOT be supported.  AES-XCBC-MAC\nderives a 128-bit subkey internally, so the nonstandard support for\nlonger AES keys didn't really work: AES-128 was still used internally.\n\nIn the unlikely event that someone is actually relying on the broken and\nnonstandard support for longer AES-XCBC-MAC keys, we can fairly easily\nreintroduce it.  But it seems unnecessary: the only user of \"xcbc(aes)\"\nseems to be IPsec, which uses 128-bit keys with it.\n\nSigned-off-by: Eric Biggers <ebiggers@kernel.org>\n---\n crypto/Kconfig                       |   2 +\n crypto/aes.c                         | 183 ++++++++++++++++++++++++++-\n crypto/testmgr.c                     |  10 +-\n drivers/crypto/starfive/jh7110-aes.c |   2 +-\n 4 files changed, 190 insertions(+), 7 deletions(-)","diff":"diff --git a/crypto/Kconfig b/crypto/Kconfig\nindex e2b4106ac961..256ce4729c8d 100644\n--- a/crypto/Kconfig\n+++ b/crypto/Kconfig\n@@ -359,10 +359,12 @@ menu \"Block ciphers\"\n \n config CRYPTO_AES\n \ttristate \"AES (Advanced Encryption Standard)\"\n \tselect CRYPTO_ALGAPI\n \tselect CRYPTO_LIB_AES\n+\tselect CRYPTO_LIB_AES_CBC_MACS if CRYPTO_CMAC || CRYPTO_XCBC || CRYPTO_CCM\n+\tselect CRYPTO_HASH if CRYPTO_CMAC || CRYPTO_XCBC || CRYPTO_CCM\n \thelp\n \t  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)\n \n \t  Rijndael appears to be consistently a very good performer in\n \t  both hardware and software across a wide range of computing\ndiff --git a/crypto/aes.c b/crypto/aes.c\nindex ae8385df0ce5..6bf23eb0503f 100644\n--- a/crypto/aes.c\n+++ b/crypto/aes.c\n@@ -3,12 +3,14 @@\n  * Crypto API support for AES block cipher\n  *\n  * Copyright 2026 Google LLC\n  */\n \n+#include <crypto/aes-cbc-macs.h>\n #include <crypto/aes.h>\n #include <crypto/algapi.h>\n+#include <crypto/internal/hash.h>\n #include <linux/module.h>\n \n static_assert(__alignof__(struct aes_key) <= CRYPTO_MINALIGN);\n \n static int crypto_aes_setkey(struct crypto_tfm *tfm, const u8 *in_key,\n@@ -31,10 +33,102 @@ static void crypto_aes_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)\n \tconst struct aes_key *key = crypto_tfm_ctx(tfm);\n \n \taes_decrypt(key, out, in);\n }\n \n+static_assert(__alignof__(struct aes_cmac_key) <= CRYPTO_MINALIGN);\n+#define AES_CMAC_KEY(tfm) ((struct aes_cmac_key *)crypto_shash_ctx(tfm))\n+#define AES_CMAC_CTX(desc) ((struct aes_cmac_ctx *)shash_desc_ctx(desc))\n+\n+static int __maybe_unused crypto_aes_cmac_setkey(struct crypto_shash *tfm,\n+\t\t\t\t\t\t const u8 *in_key,\n+\t\t\t\t\t\t unsigned int key_len)\n+{\n+\treturn aes_cmac_preparekey(AES_CMAC_KEY(tfm), in_key, key_len);\n+}\n+\n+static int __maybe_unused crypto_aes_xcbc_setkey(struct crypto_shash *tfm,\n+\t\t\t\t\t\t const u8 *in_key,\n+\t\t\t\t\t\t unsigned int key_len)\n+{\n+\tif (key_len != AES_KEYSIZE_128)\n+\t\treturn -EINVAL;\n+\taes_xcbcmac_preparekey(AES_CMAC_KEY(tfm), in_key);\n+\treturn 0;\n+}\n+\n+static int __maybe_unused crypto_aes_cmac_init(struct shash_desc *desc)\n+{\n+\taes_cmac_init(AES_CMAC_CTX(desc), AES_CMAC_KEY(desc->tfm));\n+\treturn 0;\n+}\n+\n+static int __maybe_unused crypto_aes_cmac_update(struct shash_desc *desc,\n+\t\t\t\t\t\t const u8 *data,\n+\t\t\t\t\t\t unsigned int len)\n+{\n+\taes_cmac_update(AES_CMAC_CTX(desc), data, len);\n+\treturn 0;\n+}\n+\n+static int __maybe_unused crypto_aes_cmac_final(struct shash_desc *desc,\n+\t\t\t\t\t\tu8 *out)\n+{\n+\taes_cmac_final(AES_CMAC_CTX(desc), out);\n+\treturn 0;\n+}\n+\n+static int __maybe_unused crypto_aes_cmac_digest(struct shash_desc *desc,\n+\t\t\t\t\t\t const u8 *data,\n+\t\t\t\t\t\t unsigned int len, u8 *out)\n+{\n+\taes_cmac(AES_CMAC_KEY(desc->tfm), data, len, out);\n+\treturn 0;\n+}\n+\n+static_assert(__alignof__(struct aes_enckey) <= CRYPTO_MINALIGN);\n+#define AES_CBCMAC_KEY(tfm) ((struct aes_enckey *)crypto_shash_ctx(tfm))\n+#define AES_CBCMAC_CTX(desc) ((struct aes_cbcmac_ctx *)shash_desc_ctx(desc))\n+\n+static int __maybe_unused crypto_aes_cbcmac_setkey(struct crypto_shash *tfm,\n+\t\t\t\t\t\t   const u8 *in_key,\n+\t\t\t\t\t\t   unsigned int key_len)\n+{\n+\treturn aes_prepareenckey(AES_CBCMAC_KEY(tfm), in_key, key_len);\n+}\n+\n+static int __maybe_unused crypto_aes_cbcmac_init(struct shash_desc *desc)\n+{\n+\taes_cbcmac_init(AES_CBCMAC_CTX(desc), AES_CBCMAC_KEY(desc->tfm));\n+\treturn 0;\n+}\n+\n+static int __maybe_unused crypto_aes_cbcmac_update(struct shash_desc *desc,\n+\t\t\t\t\t\t   const u8 *data,\n+\t\t\t\t\t\t   unsigned int len)\n+{\n+\taes_cbcmac_update(AES_CBCMAC_CTX(desc), data, len);\n+\treturn 0;\n+}\n+\n+static int __maybe_unused crypto_aes_cbcmac_final(struct shash_desc *desc,\n+\t\t\t\t\t\t  u8 *out)\n+{\n+\taes_cbcmac_final(AES_CBCMAC_CTX(desc), out);\n+\treturn 0;\n+}\n+\n+static int __maybe_unused crypto_aes_cbcmac_digest(struct shash_desc *desc,\n+\t\t\t\t\t\t   const u8 *data,\n+\t\t\t\t\t\t   unsigned int len, u8 *out)\n+{\n+\taes_cbcmac_init(AES_CBCMAC_CTX(desc), AES_CBCMAC_KEY(desc->tfm));\n+\taes_cbcmac_update(AES_CBCMAC_CTX(desc), data, len);\n+\taes_cbcmac_final(AES_CBCMAC_CTX(desc), out);\n+\treturn 0;\n+}\n+\n static struct crypto_alg alg = {\n \t.cra_name = \"aes\",\n \t.cra_driver_name = \"aes-lib\",\n \t.cra_priority = 100,\n \t.cra_flags = CRYPTO_ALG_TYPE_CIPHER,\n@@ -46,21 +140,108 @@ static struct crypto_alg alg = {\n \t\t\t       .cia_setkey = crypto_aes_setkey,\n \t\t\t       .cia_encrypt = crypto_aes_encrypt,\n \t\t\t       .cia_decrypt = crypto_aes_decrypt } }\n };\n \n+static struct shash_alg mac_algs[] = {\n+#if IS_ENABLED(CONFIG_CRYPTO_CMAC)\n+\t{\n+\t\t.base.cra_name = \"cmac(aes)\",\n+\t\t.base.cra_driver_name = \"cmac-aes-lib\",\n+\t\t.base.cra_priority = 300,\n+\t\t.base.cra_blocksize = AES_BLOCK_SIZE,\n+\t\t.base.cra_ctxsize = sizeof(struct aes_cmac_key),\n+\t\t.base.cra_module = THIS_MODULE,\n+\t\t.digestsize = AES_BLOCK_SIZE,\n+\t\t.setkey = crypto_aes_cmac_setkey,\n+\t\t.init = crypto_aes_cmac_init,\n+\t\t.update = crypto_aes_cmac_update,\n+\t\t.final = crypto_aes_cmac_final,\n+\t\t.digest = crypto_aes_cmac_digest,\n+\t\t.descsize = sizeof(struct aes_cmac_ctx),\n+\t},\n+#endif\n+#if IS_ENABLED(CONFIG_CRYPTO_XCBC)\n+\t{\n+\t\t/*\n+\t\t * Note that the only difference between xcbc(aes) and cmac(aes)\n+\t\t * is the preparekey function.\n+\t\t */\n+\t\t.base.cra_name = \"xcbc(aes)\",\n+\t\t.base.cra_driver_name = \"xcbc-aes-lib\",\n+\t\t.base.cra_priority = 300,\n+\t\t.base.cra_blocksize = AES_BLOCK_SIZE,\n+\t\t.base.cra_ctxsize = sizeof(struct aes_cmac_key),\n+\t\t.base.cra_module = THIS_MODULE,\n+\t\t.digestsize = AES_BLOCK_SIZE,\n+\t\t.setkey = crypto_aes_xcbc_setkey,\n+\t\t.init = crypto_aes_cmac_init,\n+\t\t.update = crypto_aes_cmac_update,\n+\t\t.final = crypto_aes_cmac_final,\n+\t\t.digest = crypto_aes_cmac_digest,\n+\t\t.descsize = sizeof(struct aes_cmac_ctx),\n+\t},\n+#endif\n+#if IS_ENABLED(CONFIG_CRYPTO_CCM)\n+\t{\n+\t\t.base.cra_name = \"cbcmac(aes)\",\n+\t\t.base.cra_driver_name = \"cbcmac-aes-lib\",\n+\t\t.base.cra_priority = 300,\n+\t\t.base.cra_blocksize = AES_BLOCK_SIZE,\n+\t\t.base.cra_ctxsize = sizeof(struct aes_enckey),\n+\t\t.base.cra_module = THIS_MODULE,\n+\t\t.digestsize = AES_BLOCK_SIZE,\n+\t\t.setkey = crypto_aes_cbcmac_setkey,\n+\t\t.init = crypto_aes_cbcmac_init,\n+\t\t.update = crypto_aes_cbcmac_update,\n+\t\t.final = crypto_aes_cbcmac_final,\n+\t\t.digest = crypto_aes_cbcmac_digest,\n+\t\t.descsize = sizeof(struct aes_cbcmac_ctx),\n+\t},\n+#endif\n+};\n+\n static int __init crypto_aes_mod_init(void)\n {\n-\treturn crypto_register_alg(&alg);\n+\tint err = crypto_register_alg(&alg);\n+\n+\tif (err)\n+\t\treturn err;\n+\n+\tif (ARRAY_SIZE(mac_algs) > 0) {\n+\t\terr = crypto_register_shashes(mac_algs, ARRAY_SIZE(mac_algs));\n+\t\tif (err)\n+\t\t\tgoto err_unregister_alg;\n+\t} /* Else, CONFIG_CRYPTO_HASH might not be enabled. */\n+\treturn 0;\n+\n+err_unregister_alg:\n+\tcrypto_unregister_alg(&alg);\n+\treturn err;\n }\n module_init(crypto_aes_mod_init);\n \n static void __exit crypto_aes_mod_exit(void)\n {\n+\tif (ARRAY_SIZE(mac_algs) > 0)\n+\t\tcrypto_unregister_shashes(mac_algs, ARRAY_SIZE(mac_algs));\n \tcrypto_unregister_alg(&alg);\n }\n module_exit(crypto_aes_mod_exit);\n \n MODULE_DESCRIPTION(\"Crypto API support for AES block cipher\");\n+MODULE_IMPORT_NS(\"CRYPTO_INTERNAL\");\n MODULE_LICENSE(\"GPL\");\n MODULE_ALIAS_CRYPTO(\"aes\");\n MODULE_ALIAS_CRYPTO(\"aes-lib\");\n+#if IS_ENABLED(CONFIG_CRYPTO_CMAC)\n+MODULE_ALIAS_CRYPTO(\"cmac(aes)\");\n+MODULE_ALIAS_CRYPTO(\"cmac-aes-lib\");\n+#endif\n+#if IS_ENABLED(CONFIG_CRYPTO_XCBC)\n+MODULE_ALIAS_CRYPTO(\"xcbc(aes)\");\n+MODULE_ALIAS_CRYPTO(\"xcbc-aes-lib\");\n+#endif\n+#if IS_ENABLED(CONFIG_CRYPTO_CCM)\n+MODULE_ALIAS_CRYPTO(\"cbcmac(aes)\");\n+MODULE_ALIAS_CRYPTO(\"cbcmac-aes-lib\");\n+#endif\ndiff --git a/crypto/testmgr.c b/crypto/testmgr.c\nindex b940721447fa..fa7217029f44 100644\n--- a/crypto/testmgr.c\n+++ b/crypto/testmgr.c\n@@ -4386,11 +4386,11 @@ static const struct alg_test_desc alg_test_descs[] = {\n \t\t\t.cipher = __VECS(aes_cbc_tv_template)\n \t\t}\n \t}, {\n #endif\n \t\t.alg = \"cbcmac(aes)\",\n-\t\t.generic_driver = \"cbcmac(aes-lib)\",\n+\t\t.generic_driver = \"cbcmac-aes-lib\",\n \t\t.test = alg_test_hash,\n \t\t.suite = {\n \t\t\t.hash = __VECS(aes_cbcmac_tv_template)\n \t\t}\n \t}, {\n@@ -4399,11 +4399,11 @@ static const struct alg_test_desc alg_test_descs[] = {\n \t\t.suite = {\n \t\t\t.hash = __VECS(sm4_cbcmac_tv_template)\n \t\t}\n \t}, {\n \t\t.alg = \"ccm(aes)\",\n-\t\t.generic_driver = \"ccm_base(ctr(aes-lib),cbcmac(aes-lib))\",\n+\t\t.generic_driver = \"ccm_base(ctr(aes-lib),cbcmac-aes-lib)\",\n \t\t.test = alg_test_aead,\n \t\t.fips_allowed = 1,\n \t\t.suite = {\n \t\t\t.aead = {\n \t\t\t\t____VECS(aes_ccm_tv_template),\n@@ -4427,11 +4427,11 @@ static const struct alg_test_desc alg_test_descs[] = {\n \t\t.suite = {\n \t\t\t.cipher = __VECS(chacha20_tv_template)\n \t\t},\n \t}, {\n \t\t.alg = \"cmac(aes)\",\n-\t\t.generic_driver = \"cmac(aes-lib)\",\n+\t\t.generic_driver = \"cmac-aes-lib\",\n \t\t.fips_allowed = 1,\n \t\t.test = alg_test_hash,\n \t\t.suite = {\n \t\t\t.hash = __VECS(aes_cmac128_tv_template)\n \t\t}\n@@ -5324,11 +5324,11 @@ static const struct alg_test_desc alg_test_descs[] = {\n \t\t\t\t.aad_iv = 1,\n \t\t\t}\n \t\t}\n \t}, {\n \t\t.alg = \"rfc4309(ccm(aes))\",\n-\t\t.generic_driver = \"rfc4309(ccm_base(ctr(aes-lib),cbcmac(aes-lib)))\",\n+\t\t.generic_driver = \"rfc4309(ccm_base(ctr(aes-lib),cbcmac-aes-lib))\",\n \t\t.test = alg_test_aead,\n \t\t.fips_allowed = 1,\n \t\t.suite = {\n \t\t\t.aead = {\n \t\t\t\t____VECS(aes_ccm_rfc4309_tv_template),\n@@ -5513,11 +5513,11 @@ static const struct alg_test_desc alg_test_descs[] = {\n \t\t.suite = {\n \t\t\t.sig = __VECS(x962_ecdsa_nist_p521_tv_template)\n \t\t}\n \t}, {\n \t\t.alg = \"xcbc(aes)\",\n-\t\t.generic_driver = \"xcbc(aes-lib)\",\n+\t\t.generic_driver = \"xcbc-aes-lib\",\n \t\t.test = alg_test_hash,\n \t\t.suite = {\n \t\t\t.hash = __VECS(aes_xcbc128_tv_template)\n \t\t}\n \t}, {\ndiff --git a/drivers/crypto/starfive/jh7110-aes.c b/drivers/crypto/starfive/jh7110-aes.c\nindex c1dc1e43e117..2e2d97d17e6c 100644\n--- a/drivers/crypto/starfive/jh7110-aes.c\n+++ b/drivers/crypto/starfive/jh7110-aes.c\n@@ -1001,11 +1001,11 @@ static int starfive_aes_ctr_init_tfm(struct crypto_skcipher *tfm)\n \treturn starfive_aes_init_tfm(tfm, \"ctr(aes-lib)\");\n }\n \n static int starfive_aes_ccm_init_tfm(struct crypto_aead *tfm)\n {\n-\treturn starfive_aes_aead_init_tfm(tfm, \"ccm_base(ctr(aes-lib),cbcmac(aes-lib))\");\n+\treturn starfive_aes_aead_init_tfm(tfm, \"ccm_base(ctr(aes-lib),cbcmac-aes-lib)\");\n }\n \n static int starfive_aes_gcm_init_tfm(struct crypto_aead *tfm)\n {\n \treturn starfive_aes_aead_init_tfm(tfm, \"gcm_base(ctr(aes-lib),ghash-generic)\");\n","prefixes":["02/15"]}