From a849803dc9aa139ce209d7b8ccf0bd57b52929c8 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 19 Sep 2018 02:56:34 +0200 Subject: blake2s: simplify final function Suggested-by: Eric Biggers --- src/crypto/zinc/blake2s/blake2s.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/crypto/zinc/blake2s/blake2s.c') diff --git a/src/crypto/zinc/blake2s/blake2s.c b/src/crypto/zinc/blake2s/blake2s.c index 69b2b4e..29382da 100644 --- a/src/crypto/zinc/blake2s/blake2s.c +++ b/src/crypto/zinc/blake2s/blake2s.c @@ -230,14 +230,20 @@ void blake2s_update(struct blake2s_state *state, const u8 *in, size_t inlen) } EXPORT_SYMBOL(blake2s_update); -void __blake2s_final(struct blake2s_state *state) +void blake2s_final(struct blake2s_state *state, u8 *out, const size_t outlen) { +#ifdef DEBUG + BUG_ON(!out || !outlen || outlen > BLAKE2S_OUTBYTES); +#endif blake2s_set_lastblock(state); memset(state->buf + state->buflen, 0, BLAKE2S_BLOCKBYTES - state->buflen); /* Padding */ blake2s_compress(state, state->buf, 1, state->buflen); + cpu_to_le32_array(state->h, ARRAY_SIZE(state->h)); + memcpy(out, state->h, outlen); + memzero_explicit(state, sizeof(*state)); } -EXPORT_SYMBOL(__blake2s_final); +EXPORT_SYMBOL(blake2s_final); void blake2s_hmac(u8 *out, const u8 *in, const u8 *key, const size_t outlen, const size_t inlen, const size_t keylen) -- cgit v1.2.3-59-g8ed1b