Skip to content

Commit

Permalink
crypto: blake2b - simplify key init
Browse files Browse the repository at this point in the history
The keyed init writes the key bytes to the input buffer and does an
update. We can do that in two ways: fill the buffer and update
immediatelly. This is what current blake2b_init_key does. Any other
following _update or _final will continue from the updated state.

The other way is to write the key and set the number of bytes to process
at the next _update or _final, lazy evaluation. Which leads to the the
simplified code in this patch.

Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
kdave authored and herbertx committed Nov 22, 2019
1 parent e374969 commit e87e484
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions crypto/blake2b_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,6 @@ static const u8 blake2b_sigma[12][16] = {
{ 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }
};

static void blake2b_update(struct blake2b_state *S, const void *pin, size_t inlen);

static void blake2b_set_lastnode(struct blake2b_state *S)
{
S->f[1] = (u64)-1;
Expand Down Expand Up @@ -235,12 +233,12 @@ static int blake2b_init(struct shash_desc *desc)
state->h[0] ^= 0x01010000 | mctx->keylen << 8 | digestsize;

if (mctx->keylen) {
u8 block[BLAKE2B_BLOCKBYTES];

memset(block, 0, BLAKE2B_BLOCKBYTES);
memcpy(block, mctx->key, mctx->keylen);
blake2b_update(state, block, BLAKE2B_BLOCKBYTES);
memzero_explicit(block, BLAKE2B_BLOCKBYTES);
/*
* Prefill the buffer with the key, next call to _update or
* _final will process it
*/
memcpy(state->buf, mctx->key, mctx->keylen);
state->buflen = BLAKE2B_BLOCKBYTES;
}
return 0;
}
Expand Down

0 comments on commit e87e484

Please sign in to comment.