Commit 485decee authored by Eric Biggers's avatar Eric Biggers
Browse files

crypto: riscv/sha512 - Stop depending on sha512_generic_block_fn



sha512_generic_block_fn() will no longer be available when the SHA-512
support in the old-school crypto API is changed to just wrap the SHA-512
library.  Replace the use of sha512_generic_block_fn() in
sha512-riscv64-glue.c with temporary code that uses the library's
__sha512_update().  This is just a temporary workaround to keep the
kernel building and functional at each commit; this code gets superseded
when the RISC-V optimized SHA-512 is migrated to lib/crypto/ anyway.

Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250630160320.2888-5-ebiggers@kernel.org


Signed-off-by: default avatarEric Biggers <ebiggers@kernel.org>
parent 23e8b437
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ config CRYPTO_GHASH_RISCV64
config CRYPTO_SHA512_RISCV64
	tristate "Hash functions: SHA-384 and SHA-512"
	depends on 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
	select CRYPTO_LIB_SHA512
	select CRYPTO_SHA512
	help
	  SHA-384 and SHA-512 secure hash algorithm (FIPS 180)
+7 −1
Original line number Diff line number Diff line
@@ -38,7 +38,13 @@ static void sha512_block(struct sha512_state *state, const u8 *data,
		sha512_transform_zvknhb_zvkb(state, data, num_blocks);
		kernel_vector_end();
	} else {
		sha512_generic_block_fn(state, data, num_blocks);
		struct __sha512_ctx ctx = {};

		static_assert(sizeof(ctx.state) == sizeof(state->state));
		memcpy(&ctx.state, state->state, sizeof(ctx.state));
		__sha512_update(&ctx, data,
				(size_t)num_blocks * SHA512_BLOCK_SIZE);
		memcpy(state->state, &ctx.state, sizeof(state->state));
	}
}