1 /* hmac-md5.h -- HMAC_MD5 functions
7 #define HMAC_MD5_SIZE 16
9 /* intermediate MD5 context */
10 typedef struct HMAC_MD5_CTX_s {
14 /* intermediate HMAC state
15 * values stored in network byte order (Big Endian)
17 typedef struct HMAC_MD5_STATE_s {
26 /* One step hmac computation
28 * digest may be same as text or key
30 void _sasl_hmac_md5(const unsigned char *text, int text_len,
31 const unsigned char *key, int key_len,
32 unsigned char digest[HMAC_MD5_SIZE]);
34 /* create context from key
36 void _sasl_hmac_md5_init(HMAC_MD5_CTX *hmac,
37 const unsigned char *key, int key_len);
39 /* precalculate intermediate state from key
41 void _sasl_hmac_md5_precalc(HMAC_MD5_STATE *hmac,
42 const unsigned char *key, int key_len);
44 /* initialize context from intermediate state
46 void _sasl_hmac_md5_import(HMAC_MD5_CTX *hmac, HMAC_MD5_STATE *state);
48 #define _sasl_hmac_md5_update(hmac, text, text_len) _sasl_MD5Update(&(hmac)->ictx, (text), (text_len))
50 /* finish hmac from intermediate result. Intermediate result is zeroed.
52 void _sasl_hmac_md5_final(unsigned char digest[HMAC_MD5_SIZE],
59 #endif /* HMAC_MD5_H */