/* This file was auto-generated by KreMLin! */
#include "kremlib.h"
#ifndef __SHA2_384_H
#define __SHA2_384_H



#include "testlib.h"

typedef uint8_t Hacl_Hash_Lib_Create_uint8_t;

typedef uint32_t Hacl_Hash_Lib_Create_uint32_t;

typedef uint64_t Hacl_Hash_Lib_Create_uint64_t;

typedef uint8_t Hacl_Hash_Lib_Create_uint8_ht;

typedef uint32_t Hacl_Hash_Lib_Create_uint32_ht;

typedef uint64_t Hacl_Hash_Lib_Create_uint64_ht;

typedef uint8_t *Hacl_Hash_Lib_Create_uint8_p;

typedef uint32_t *Hacl_Hash_Lib_Create_uint32_p;

typedef uint64_t *Hacl_Hash_Lib_Create_uint64_p;

typedef uint8_t *Hacl_Hash_Lib_LoadStore_uint8_p;

typedef uint8_t Hacl_Hash_SHA2_384_uint8_t;

typedef uint32_t Hacl_Hash_SHA2_384_uint32_t;

typedef uint64_t Hacl_Hash_SHA2_384_uint64_t;

typedef uint8_t Hacl_Hash_SHA2_384_uint8_ht;

typedef uint32_t Hacl_Hash_SHA2_384_uint32_ht;

typedef uint64_t Hacl_Hash_SHA2_384_uint64_ht;

typedef FStar_UInt128_t Hacl_Hash_SHA2_384_uint128_ht;

typedef uint64_t *Hacl_Hash_SHA2_384_uint64_p;

typedef uint8_t *Hacl_Hash_SHA2_384_uint8_p;

typedef uint8_t SHA2_384_uint8_t;

typedef uint32_t SHA2_384_uint32_t;

typedef uint64_t SHA2_384_uint64_t;

typedef uint8_t SHA2_384_uint8_ht;

typedef uint64_t SHA2_384_uint64_ht;

typedef uint64_t *SHA2_384_uint64_p;

typedef uint8_t *SHA2_384_uint8_p;

extern uint32_t SHA2_384_size_hash;

extern uint32_t SHA2_384_size_block;

extern uint32_t SHA2_384_size_state;

void SHA2_384_init(uint64_t *state);

void SHA2_384_update(uint64_t *state, uint8_t *data_8);

void SHA2_384_update_multi(uint64_t *state, uint8_t *data, uint32_t n1);

void SHA2_384_update_last(uint64_t *state, uint8_t *data, uint64_t len);

void SHA2_384_finish(uint64_t *state, uint8_t *hash1);

void SHA2_384_hash(uint8_t *hash1, uint8_t *input, uint32_t len);
#endif
