1 #ifndef crypto_generichash_blake2b_H
2 #define crypto_generichash_blake2b_H
10 #define crypto_generichash_blake2b_BYTES 32U
11 #define crypto_generichash_blake2b_BYTES_MIN 16U
12 #define crypto_generichash_blake2b_BYTES_MAX 64U
13 #define crypto_generichash_blake2b_KEYBYTES 32U
14 #define crypto_generichash_blake2b_KEYBYTES_MIN 16U
15 #define crypto_generichash_blake2b_KEYBYTES_MAX 64U
16 #define crypto_generichash_blake2b_BLOCKBYTES 128U
19 # define CRYPTO_ALIGN(x) __declspec(align(x))
21 # define CRYPTO_ALIGN(x) __attribute__((aligned(x)))
29 CRYPTO_ALIGN(64) typedef struct crypto_generichash_blake2b_state
{
33 uint8_t buf
[2 * crypto_generichash_blake2b_BLOCKBYTES
];
36 } crypto_generichash_blake2b_state
;
40 size_t crypto_generichash_blake2b_bytes_min(void);
43 size_t crypto_generichash_blake2b_bytes_max(void);
46 size_t crypto_generichash_blake2b_keybytes_min(void);
49 size_t crypto_generichash_blake2b_keybytes_max(void);
52 size_t crypto_generichash_blake2b_blockbytes(void);
55 const char * crypto_generichash_blake2b_blockbytes_primitive(void);
58 int crypto_generichash_blake2b(unsigned char *out
, size_t outlen
,
59 const unsigned char *in
,
60 unsigned long long inlen
,
61 const unsigned char *key
, size_t keylen
);
64 int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state
*state
,
65 const unsigned char *key
,
66 const size_t keylen
, const size_t outlen
);
69 int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state
*state
,
70 const unsigned char *in
,
71 unsigned long long inlen
);
74 int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state
*state
,
82 #define crypto_generichash_blake2b_ref crypto_generichash_blake2b
83 #define crypto_generichash_blake2b_ref_init crypto_generichash_blake2b_init
84 #define crypto_generichash_blake2b_ref_update crypto_generichash_blake2b_update
85 #define crypto_generichash_blake2b_ref_final crypto_generichash_blake2b_final