25#define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop))
27#define BLAKE2_PACKED(x) x __attribute__((packed))
30enum blake2s_constant {
31 BLAKE2S_BLOCKBYTES = 64,
32 BLAKE2S_OUTBYTES = 32,
33 BLAKE2S_KEYBYTES = 32,
34 BLAKE2S_SALTBYTES = 8,
35 BLAKE2S_PERSONALBYTES = 8
42 uint8_t buf[BLAKE2S_BLOCKBYTES];
48BLAKE2_PACKED(
struct blake2s_param__ {
49 uint8_t digest_length;
59 uint8_t salt[BLAKE2S_SALTBYTES];
60 uint8_t personal[BLAKE2S_PERSONALBYTES];
63typedef struct blake2s_param__ blake2s_param;
66enum { BLAKE2_DUMMY_1 = 1 / (
sizeof(blake2s_param) == BLAKE2S_OUTBYTES) };
68int blake2s_init(blake2s_state* S,
size_t outlen);
69int blake2s_init_key(blake2s_state* S,
size_t outlen,
const void* key,
size_t keylen);
70int blake2s_init_param(blake2s_state* S,
const blake2s_param* P);
71int blake2s_update(blake2s_state* S,
const void* in,
size_t inlen);
72int blake2s_final(blake2s_state* S,
void* out,
size_t outlen);
74std::array<uint8_t, BLAKE2S_OUTBYTES> blake2s(std::vector<uint8_t>
const& input);
Definition: blake2s.hpp:38