/***********************************************************
*       libsrs_alt - A simple SRS implementation           *
***********************************************************/

/* (C)2004 Miles Wilton <miles@mirtol.com> */

/* License: GPL */

/* This file:

   hmac.h

   <no description>
*/


#define mHMAC_MAX_BLOCK_SIZE          64
#define mHMAC_MAX_HASH_LEN            20


/* Structures */

typedef struct mHMAC_DIGEST_s   {
    int             block_size;
    int             digest_length;
    int             digest_struct_size;
    int             (*DIGEST_start)(void *);
    int             (*DIGEST_block)(void *, unsigned char *);
    int             (*DIGEST_process)(void *, unsigned char *, int);
    int             (*DIGEST_end)(void *, unsigned char *);
} mHMAC_DIGEST;


typedef struct mHMAC_s   {
    char            secret[mHMAC_MAX_BLOCK_SIZE];
    char            hash[mHMAC_MAX_HASH_LEN];
    void           *digest_struct;
    mHMAC_DIGEST    *hmac_digest;
} mHMAC;



/* Function Prototypes */

int mHMAC_start(mHMAC *hmac, mHMAC_DIGEST *hmac_digest, char *secret, int secret_len);
int mHMAC_process(mHMAC *hmac, unsigned char *data, int data_len);
int mHMAC_end(mHMAC *hmac, unsigned char *hash_buffer);
int mHMAC_gethash(mHMAC *hmac, unsigned char *hash_buffer);



syntax highlighted by Code2HTML, v. 0.9.1