10 crypto_generichash_blake2b(unsigned char *out
, size_t outlen
,
11 const unsigned char *in
, unsigned long long inlen
,
12 const unsigned char *key
, size_t keylen
)
14 if (outlen
<= 0U || outlen
> BLAKE2B_OUTBYTES
||
15 keylen
> BLAKE2B_KEYBYTES
|| inlen
> UINT64_MAX
) {
18 assert(outlen
<= UINT8_MAX
);
19 assert(keylen
<= UINT8_MAX
);
21 return blake2b((uint8_t *) out
, in
, key
,
22 (uint8_t) outlen
, (uint64_t) inlen
, (uint8_t) keylen
);
26 crypto_generichash_blake2b_init(crypto_generichash_blake2b_state
*state
,
27 const unsigned char *key
,
28 const size_t keylen
, const size_t outlen
)
30 if (outlen
<= 0U || outlen
> BLAKE2B_OUTBYTES
||
31 keylen
> BLAKE2B_KEYBYTES
) {
34 assert(outlen
<= UINT8_MAX
);
35 assert(keylen
<= UINT8_MAX
);
36 if (blake2b_init(state
, (uint8_t) outlen
) != 0) {
39 if (key
!= NULL
&& keylen
> 0U &&
40 blake2b_init_key(state
, (uint8_t) outlen
, key
, keylen
) != 0) {
47 crypto_generichash_blake2b_update(crypto_generichash_blake2b_state
*state
,
48 const unsigned char *in
,
49 unsigned long long inlen
)
51 return blake2b_update(state
, (const uint8_t *) in
, (uint64_t) inlen
);
55 crypto_generichash_blake2b_final(crypto_generichash_blake2b_state
*state
,
59 assert(outlen
<= UINT8_MAX
);
60 return blake2b_final(state
, (uint8_t *) out
, (uint8_t) outlen
);