1/*
2 * hmac.h: header file for HMAC-SHA-1/224/256/384/512 routines
3 *
4 * Ref: FIPS PUB 198 The Keyed-Hash Message Authentication Code
5 *
6 * Copyright (C) 2003-2007 Mark Shelor, All Rights Reserved
7 *
8 * Version: 5.45
9 * Tue Jun 26 02:36:00 MST 2007
10 *
11 */
12
13#ifndef _INCLUDE_HMAC_H_
14#define _INCLUDE_HMAC_H_
15
16#include "sha.h"
17
18typedef struct {
19	SHA *ksha;
20	SHA *isha;
21	SHA *osha;
22	unsigned char key[SHA_MAX_BLOCK_BITS/8];
23} HMAC;
24
25#define _HMAC_STATE	HMAC *h
26#define _HMAC_ALG	int alg
27#define _HMAC_DATA	unsigned char *bitstr, unsigned long bitcnt
28#define _HMAC_KEY	unsigned char *key, unsigned int keylen
29
30HMAC		*hmacopen 	(_HMAC_ALG, _HMAC_KEY);
31unsigned long	 hmacwrite	(_HMAC_DATA, _HMAC_STATE);
32void		 hmacfinish	(_HMAC_STATE);
33unsigned char	*hmacdigest	(_HMAC_STATE);
34char		*hmachex	(_HMAC_STATE);
35char		*hmacbase64	(_HMAC_STATE);
36int		 hmacclose	(_HMAC_STATE);
37
38#ifndef SHA_PERL_MODULE
39
40unsigned char	*hmac1digest	(_HMAC_DATA, _HMAC_KEY);
41char		*hmac1hex	(_HMAC_DATA, _HMAC_KEY);
42char		*hmac1base64	(_HMAC_DATA, _HMAC_KEY);
43unsigned char	*hmac224digest	(_HMAC_DATA, _HMAC_KEY);
44char		*hmac224hex	(_HMAC_DATA, _HMAC_KEY);
45char		*hmac224base64	(_HMAC_DATA, _HMAC_KEY);
46unsigned char	*hmac256digest	(_HMAC_DATA, _HMAC_KEY);
47char		*hmac256hex	(_HMAC_DATA, _HMAC_KEY);
48char		*hmac256base64	(_HMAC_DATA, _HMAC_KEY);
49unsigned char	*hmac384digest	(_HMAC_DATA, _HMAC_KEY);
50char		*hmac384hex	(_HMAC_DATA, _HMAC_KEY);
51char		*hmac384base64	(_HMAC_DATA, _HMAC_KEY);
52unsigned char	*hmac512digest	(_HMAC_DATA, _HMAC_KEY);
53char		*hmac512hex	(_HMAC_DATA, _HMAC_KEY);
54char		*hmac512base64	(_HMAC_DATA, _HMAC_KEY);
55
56#endif
57
58#endif	/* _INCLUDE_HMAC_H_ */
59