/*
** Copyright 2001-2005 Double Precision, Inc.
** See COPYING for distribution information.
*/
#define	SHA1_INTERNAL
#include	"sha1.h"
#include	"../libhmac/hmac.h"

static const char rcsid[]="$Id: hmac.c,v 1.2 2005/02/21 03:18:30 mrsam Exp $";

static void alloc_context_sha1( void (*func)(void *, void *), void *arg)
{
struct	SHA1_CONTEXT c;

	(*func)((void *)&c, arg);
}

static void alloc_hash_sha1( void (*func)(unsigned char *, void *), void *arg)
{
unsigned char c[SHA1_DIGEST_SIZE];

	(*func)(c, arg);
}

struct hmac_hashinfo hmac_sha1 = {
	"sha1",
	SHA1_BLOCK_SIZE,
	SHA1_DIGEST_SIZE,
	sizeof(struct SHA1_CONTEXT),
	(void (*)(void *))sha1_context_init,
	(void (*)(void *, const void *, unsigned))sha1_context_hashstream,
	(void (*)(void *, unsigned long))sha1_context_endstream,
	(void (*)(void *, unsigned char *))sha1_context_digest,
	(void (*)(void *, const unsigned char *))sha1_context_restore,
        alloc_context_sha1,
	alloc_hash_sha1};

static void alloc_context_sha256( void (*func)(void *, void *), void *arg)
{
struct	SHA256_CONTEXT c;

	(*func)((void *)&c, arg);
}

static void alloc_hash_sha256( void (*func)(unsigned char *, void *), void *arg)
{
unsigned char c[SHA256_DIGEST_SIZE];

	(*func)(c, arg);
}

struct hmac_hashinfo hmac_sha256 = {
	"sha256",
	SHA256_BLOCK_SIZE,
	SHA256_DIGEST_SIZE,
	sizeof(struct SHA256_CONTEXT),
	(void (*)(void *))sha256_context_init,
	(void (*)(void *, const void *, unsigned))sha256_context_hashstream,
	(void (*)(void *, unsigned long))sha256_context_endstream,
	(void (*)(void *, unsigned char *))sha256_context_digest,
	(void (*)(void *, const unsigned char *))sha256_context_restore,
        alloc_context_sha256,
	alloc_hash_sha256};


syntax highlighted by Code2HTML, v. 0.9.1