mirror of
https://github.com/torvalds/linux.git
synced 2026-10-23 23:51:02 +02:00
lib/crypto: blake2: Provide functions for zeroizing blake2*_ctx structures
In certain cases crypto code needs to zeroize their local blake2b_ctx or blake2s_ctx structures after use to avoid leaking sensitive material. Provide blake2b_zeroize_ctx() and blake2s_zeroize_ctx() helper functions that e.g. can be used with __cleanup() to automatically zeroize the structures when they go out of scope. While we're at it, replace the related memzero_explicit() calls in lib/crypto/blake2*.c with calls to the new helper functions. Signed-off-by: Thomas Huth <thuth@redhat.com> Link: https://patch.msgid.link/20260916095022.604354-8-thuth@redhat.com Signed-off-by: Eric Biggers <ebiggers@kernel.org>
This commit is contained in:
parent
e2b5aa03d6
commit
97560fd98d
|
|
@ -37,6 +37,15 @@ struct blake2b_ctx {
|
|||
unsigned int outlen;
|
||||
};
|
||||
|
||||
/**
|
||||
* blake2b_zeroize_ctx() - Zeroize a blake2b_ctx structure
|
||||
* @ctx: The blake2b_ctx to zeroize
|
||||
*/
|
||||
static inline void blake2b_zeroize_ctx(struct blake2b_ctx *ctx)
|
||||
{
|
||||
memzero_explicit(ctx, sizeof(*ctx));
|
||||
}
|
||||
|
||||
enum blake2b_iv {
|
||||
BLAKE2B_IV0 = 0x6A09E667F3BCC908ULL,
|
||||
BLAKE2B_IV1 = 0xBB67AE8584CAA73BULL,
|
||||
|
|
|
|||
|
|
@ -41,6 +41,15 @@ struct blake2s_ctx {
|
|||
unsigned int outlen;
|
||||
};
|
||||
|
||||
/**
|
||||
* blake2s_zeroize_ctx() - Zeroize a blake2s_ctx structure
|
||||
* @ctx: The blake2s_ctx to zeroize
|
||||
*/
|
||||
static inline void blake2s_zeroize_ctx(struct blake2s_ctx *ctx)
|
||||
{
|
||||
memzero_explicit(ctx, sizeof(*ctx));
|
||||
}
|
||||
|
||||
enum blake2s_iv {
|
||||
BLAKE2S_IV0 = 0x6A09E667UL,
|
||||
BLAKE2S_IV1 = 0xBB67AE85UL,
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ void blake2b_final(struct blake2b_ctx *ctx, u8 *out)
|
|||
blake2b_compress(ctx, ctx->buf, 1, ctx->buflen);
|
||||
cpu_to_le64_array(ctx->h, ARRAY_SIZE(ctx->h));
|
||||
memcpy(out, ctx->h, ctx->outlen);
|
||||
memzero_explicit(ctx, sizeof(*ctx));
|
||||
blake2b_zeroize_ctx(ctx);
|
||||
}
|
||||
EXPORT_SYMBOL(blake2b_final);
|
||||
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ void blake2s_final(struct blake2s_ctx *ctx, u8 *out)
|
|||
blake2s_compress(ctx, ctx->buf, 1, ctx->buflen);
|
||||
cpu_to_le32_array(ctx->h, ARRAY_SIZE(ctx->h));
|
||||
memcpy(out, ctx->h, ctx->outlen);
|
||||
memzero_explicit(ctx, sizeof(*ctx));
|
||||
blake2s_zeroize_ctx(ctx);
|
||||
}
|
||||
EXPORT_SYMBOL(blake2s_final);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user