mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
lib/crypto: sha256: Sync sha256_update() with sha512_update()
The BLOCK_HASH_UPDATE_BLOCKS macro is difficult to read. For now, let's just write the update explicitly in the straightforward way, mirroring sha512_update(). It's possible that we'll bring back a macro for this later, but it needs to be properly justified and hopefully a bit more readable. Acked-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20250630160645.3198-14-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
This commit is contained in:
parent
e96cb9507f
commit
773d2b99bb
|
|
@ -10,7 +10,6 @@
|
|||
*/
|
||||
|
||||
#include <crypto/hmac.h>
|
||||
#include <crypto/internal/blockhash.h>
|
||||
#include <crypto/sha2.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/kernel.h>
|
||||
|
|
@ -180,8 +179,31 @@ void __sha256_update(struct __sha256_ctx *ctx, const u8 *data, size_t len)
|
|||
size_t partial = ctx->bytecount % SHA256_BLOCK_SIZE;
|
||||
|
||||
ctx->bytecount += len;
|
||||
BLOCK_HASH_UPDATE_BLOCKS(sha256_blocks, &ctx->state, data, len,
|
||||
SHA256_BLOCK_SIZE, ctx->buf, partial);
|
||||
|
||||
if (partial + len >= SHA256_BLOCK_SIZE) {
|
||||
size_t nblocks;
|
||||
|
||||
if (partial) {
|
||||
size_t l = SHA256_BLOCK_SIZE - partial;
|
||||
|
||||
memcpy(&ctx->buf[partial], data, l);
|
||||
data += l;
|
||||
len -= l;
|
||||
|
||||
sha256_blocks(&ctx->state, ctx->buf, 1);
|
||||
}
|
||||
|
||||
nblocks = len / SHA256_BLOCK_SIZE;
|
||||
len %= SHA256_BLOCK_SIZE;
|
||||
|
||||
if (nblocks) {
|
||||
sha256_blocks(&ctx->state, data, nblocks);
|
||||
data += nblocks * SHA256_BLOCK_SIZE;
|
||||
}
|
||||
partial = 0;
|
||||
}
|
||||
if (len)
|
||||
memcpy(&ctx->buf[partial], data, len);
|
||||
}
|
||||
EXPORT_SYMBOL(__sha256_update);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user