/* blake2b.h */
#ifndef BLAKE2B_H
#define BLAKE2B_H
#include "ustd.h"

#ifdef __cplusplus
extern "C" {
#endif

#define blake2b_block_size 128
#define blake2b_hash_size  64

typedef struct blake2b_ctx
{
	uint64_t hash[8];
	uint64_t message[16];
	uint64_t length;
} blake2b_ctx;

void rhash_blake2b_init(blake2b_ctx* ctx);
void rhash_blake2b_update(blake2b_ctx* ctx, const unsigned char* msg, size_t size);
void rhash_blake2b_final(blake2b_ctx* ctx, unsigned char* result);

#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */

#endif /* BLAKE2B_H */