From nobody Fri Dec 19 20:34:11 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A82DE136A; Sat, 17 May 2025 02:25:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747448717; cv=none; b=qGQ9s5RcMaMSfh4/oT8f+UmWz+XFGaU7x2bFhO9ruHt+nf5ayup23qzRqeBKL6oqflSrh1GOUwyoTHjo/K1qUpHAe6WGWDCNSFXvfmnWL1ZOZ7D3vo9R3rtq1M/nhLU6L+HLoyVptCIsVbi8Hx9F7esu2fdqXAZgqPA3BAcZKOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747448717; c=relaxed/simple; bh=rxExDmAR8OpsxVyOb93D2F15CH0EPCc4/kwgbjLbV9Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AAhs4sA4K/X/AxWFgpIlc6ln49ZjyaFq+C3aq/fvUi+R40RgVW0WF2U5DTSFEG7HgI6lLv3r00QES6U8bNYuL0KV81RoNZ+w9nszHEf8srEzUFHb65A87vdbj/RHVr2r8EQttbfUZCLyMBXWjXP/nW60bBagNJhcofjbrZVXbtk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/l/zeea; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/l/zeea" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1674EC4CEED; Sat, 17 May 2025 02:25:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747448717; bh=rxExDmAR8OpsxVyOb93D2F15CH0EPCc4/kwgbjLbV9Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=P/l/zeeaXlGjk85ozjkiv28mbQYM7Eywozk64Ge4ByotlQz/Ay52oeNxkTuhNQ0Xs 0c1HUsfX8sbbds48bccgUqdXM9ET90XngyZ3FFa08krugskvGIL7AfLQHb/M9LhegA +lvnwjclZhv3Ppy+s8egKJGviQPxBfb9g/5ZemZQfiOEGN8mmJh5T49jzcp51DXR7A saT45Gbtey7sO3XQxvASua+4Ekpr7YlRTtQ45vhgu9X2UNEf7B1DAlmZ3WIleVTr/5 2ejbGtRYpPcMIkAt2tY7IKGdkm+oBjX/nonENKohJDyYd7Gmq3V+HJtEpoTN0cfvDF tZ7YaQIazksZA== From: Eric Biggers To: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH 1/8] Revert "crypto: sha256 - Use the partial block API" Date: Fri, 16 May 2025 19:24:21 -0700 Message-ID: <20250517022428.401622-2-ebiggers@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250517022428.401622-1-ebiggers@kernel.org> References: <20250517022428.401622-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Eric Biggers This reverts commit 3bf5337879101166dfacfbc2a780d1a379c288ba which got pushed out despite being nacked. The library API already has to handle partial blocks, and it makes a lot more sense to just use that. Signed-off-by: Eric Biggers --- crypto/sha256.c | 81 ++++++++++++++----------------------------------- 1 file changed, 23 insertions(+), 58 deletions(-) diff --git a/crypto/sha256.c b/crypto/sha256.c index 4aeb213bab117..cf190114574ea 100644 --- a/crypto/sha256.c +++ b/crypto/sha256.c @@ -50,24 +50,18 @@ static int crypto_sha256_update_generic(struct shash_de= sc *desc, const u8 *data, unsigned int len) { return crypto_sha256_update(desc, data, len, true); } =20 -static int crypto_sha256_update_lib(struct shash_desc *desc, const u8 *dat= a, - unsigned int len) -{ - sha256_update(shash_desc_ctx(desc), data, len); - return 0; -} - static int crypto_sha256_update_arch(struct shash_desc *desc, const u8 *da= ta, unsigned int len) { - return crypto_sha256_update(desc, data, len, false); + sha256_update(shash_desc_ctx(desc), data, len); + return 0; } =20 -static int crypto_sha256_final_lib(struct shash_desc *desc, u8 *out) +static int crypto_sha256_final_arch(struct shash_desc *desc, u8 *out) { sha256_final(shash_desc_ctx(desc), out); return 0; } =20 @@ -97,41 +91,38 @@ static int crypto_sha256_finup_generic(struct shash_des= c *desc, const u8 *data, } =20 static int crypto_sha256_finup_arch(struct shash_desc *desc, const u8 *dat= a, unsigned int len, u8 *out) { - return crypto_sha256_finup(desc, data, len, out, false); + struct sha256_state *sctx =3D shash_desc_ctx(desc); + + sha256_update(sctx, data, len); + sha256_final(sctx, out); + return 0; } =20 static int crypto_sha256_digest_generic(struct shash_desc *desc, const u8 = *data, unsigned int len, u8 *out) { crypto_sha256_init(desc); return crypto_sha256_finup_generic(desc, data, len, out); } =20 -static int crypto_sha256_digest_lib(struct shash_desc *desc, const u8 *dat= a, - unsigned int len, u8 *out) -{ - sha256(data, len, out); - return 0; -} - static int crypto_sha256_digest_arch(struct shash_desc *desc, const u8 *da= ta, unsigned int len, u8 *out) { - crypto_sha256_init(desc); - return crypto_sha256_finup_arch(desc, data, len, out); + sha256(data, len, out); + return 0; } =20 static int crypto_sha224_init(struct shash_desc *desc) { sha224_block_init(shash_desc_ctx(desc)); return 0; } =20 -static int crypto_sha224_final_lib(struct shash_desc *desc, u8 *out) +static int crypto_sha224_final_arch(struct shash_desc *desc, u8 *out) { sha224_final(shash_desc_ctx(desc), out); return 0; } =20 @@ -191,79 +182,53 @@ static struct shash_alg algs[] =3D { .finup =3D crypto_sha256_finup_generic, .descsize =3D sizeof(struct crypto_sha256_state), }, { .base.cra_name =3D "sha256", - .base.cra_driver_name =3D "sha256-lib", + .base.cra_driver_name =3D "sha256-" __stringify(ARCH), + .base.cra_priority =3D 300, .base.cra_blocksize =3D SHA256_BLOCK_SIZE, .base.cra_module =3D THIS_MODULE, .digestsize =3D SHA256_DIGEST_SIZE, .init =3D crypto_sha256_init, - .update =3D crypto_sha256_update_lib, - .final =3D crypto_sha256_final_lib, - .digest =3D crypto_sha256_digest_lib, + .update =3D crypto_sha256_update_arch, + .final =3D crypto_sha256_final_arch, + .finup =3D crypto_sha256_finup_arch, + .digest =3D crypto_sha256_digest_arch, .descsize =3D sizeof(struct sha256_state), .statesize =3D sizeof(struct crypto_sha256_state) + SHA256_BLOCK_SIZE + 1, .import =3D crypto_sha256_import_lib, .export =3D crypto_sha256_export_lib, }, { .base.cra_name =3D "sha224", - .base.cra_driver_name =3D "sha224-lib", + .base.cra_driver_name =3D "sha224-" __stringify(ARCH), + .base.cra_priority =3D 300, .base.cra_blocksize =3D SHA224_BLOCK_SIZE, .base.cra_module =3D THIS_MODULE, .digestsize =3D SHA224_DIGEST_SIZE, .init =3D crypto_sha224_init, - .update =3D crypto_sha256_update_lib, - .final =3D crypto_sha224_final_lib, + .update =3D crypto_sha256_update_arch, + .final =3D crypto_sha224_final_arch, .descsize =3D sizeof(struct sha256_state), .statesize =3D sizeof(struct crypto_sha256_state) + SHA256_BLOCK_SIZE + 1, .import =3D crypto_sha256_import_lib, .export =3D crypto_sha256_export_lib, }, - { - .base.cra_name =3D "sha256", - .base.cra_driver_name =3D "sha256-" __stringify(ARCH), - .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_AHASH_ALG_BLOCK_ONLY | - CRYPTO_AHASH_ALG_FINUP_MAX, - .base.cra_blocksize =3D SHA256_BLOCK_SIZE, - .base.cra_module =3D THIS_MODULE, - .digestsize =3D SHA256_DIGEST_SIZE, - .init =3D crypto_sha256_init, - .update =3D crypto_sha256_update_arch, - .finup =3D crypto_sha256_finup_arch, - .digest =3D crypto_sha256_digest_arch, - .descsize =3D sizeof(struct crypto_sha256_state), - }, - { - .base.cra_name =3D "sha224", - .base.cra_driver_name =3D "sha224-" __stringify(ARCH), - .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_AHASH_ALG_BLOCK_ONLY | - CRYPTO_AHASH_ALG_FINUP_MAX, - .base.cra_blocksize =3D SHA224_BLOCK_SIZE, - .base.cra_module =3D THIS_MODULE, - .digestsize =3D SHA224_DIGEST_SIZE, - .init =3D crypto_sha224_init, - .update =3D crypto_sha256_update_arch, - .finup =3D crypto_sha256_finup_arch, - .descsize =3D sizeof(struct crypto_sha256_state), - }, }; =20 static unsigned int num_algs; =20 static int __init crypto_sha256_mod_init(void) { /* register the arch flavours only if they differ from generic */ num_algs =3D ARRAY_SIZE(algs); - BUILD_BUG_ON(ARRAY_SIZE(algs) <=3D 2); + BUILD_BUG_ON(ARRAY_SIZE(algs) % 2 !=3D 0); if (!sha256_is_arch_optimized()) - num_algs -=3D 2; + num_algs /=3D 2; return crypto_register_shashes(algs, ARRAY_SIZE(algs)); } module_init(crypto_sha256_mod_init); =20 static void __exit crypto_sha256_mod_exit(void) --=20 2.49.0