#ifndef TTH_H
#define TTH_H

#include "ustd.h"
#include "tiger.h"

#ifdef __cplusplus
extern "C" {
#endif

/* algorithm context */
typedef struct tth_ctx
{
	tiger_ctx tiger;       /* context used to hash tree leaves */
	uint64_t block_count;  /* number of processed blocks */
	uint64_t stack[64 * 3];
} tth_ctx;

/* hash functions */

void rhash_tth_init(tth_ctx *ctx);
void rhash_tth_update(tth_ctx *ctx, const unsigned char* msg, size_t size);
void rhash_tth_final(tth_ctx *ctx, unsigned char result[64]);

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

#endif /* TTH_H */
