forked from maandree/libblake
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlibblake_blake2xb_digest.c
More file actions
23 lines (19 loc) · 978 Bytes
/
libblake_blake2xb_digest.c
File metadata and controls
23 lines (19 loc) · 978 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* See LICENSE file for copyright and license details. */
#include "common.h"
void
libblake_blake2xb_digest(const struct libblake_blake2xb_state *state,
uint_least32_t i /* start 0, increase by 1 until i * 64 >= desired hash length */,
uint_least8_t len /* desired hash MIN(length - i * 64, 64) */,
unsigned char output[static len] /* output for hash offset by i * 64 */)
{
struct libblake_blake2xb_state xstate;
struct libblake_blake2xb_params xparams;
xparams = state->xof_params;
xparams.node_offset = i;
xparams.digest_len = len;
libblake_internal_blake2xb_init0(&xstate, &xparams);
xstate.b2b.f[0] = UINT_LEAST64_C(0xFFFFffffFFFFffff);
xstate.b2b.t[0] = (uint_least64_t)state->xof_params.digest_len & UINT_LEAST64_C(0xFFFFffffFFFFffff);
libblake_internal_blake2b_compress(&xstate.b2b, state->intermediate);
libblake_internal_blake2b_output_digest(&xstate.b2b, (size_t)len, output);
}