5 static unsigned char *hmaccomp(alg, fmt, bitstr, bitcnt, key, keylen)
14 static unsigned char digest[SHA_MAX_HEX_LEN+1];
15 unsigned char *ret = digest;
17 if ((h = hmacopen(alg, key, keylen)) == NULL)
19 hmacwrite(bitstr, bitcnt, h);
21 if (fmt == SHA_FMT_RAW)
22 memcpy(digest, hmacdigest(h), h->osha->digestlen);
23 else if (fmt == SHA_FMT_HEX)
24 strcpy((char *) digest, hmachex(h));
25 else if (fmt == SHA_FMT_BASE64)
26 strcpy((char *) digest, hmacbase64(h));
33 #define HMAC_DIRECT(type, name, alg, fmt) \
34 type name(bitstr, bitcnt, key, keylen) \
35 unsigned char *bitstr; \
36 unsigned long bitcnt; \
38 unsigned int keylen; \
40 return((type) hmaccomp(alg, fmt, bitstr, bitcnt, \
44 HMAC_DIRECT(unsigned char *, hmac1digest, SHA1, SHA_FMT_RAW)
45 HMAC_DIRECT(char *, hmac1hex, SHA1, SHA_FMT_HEX)
46 HMAC_DIRECT(char *, hmac1base64, SHA1, SHA_FMT_BASE64)
48 HMAC_DIRECT(unsigned char *, hmac224digest, SHA224, SHA_FMT_RAW)
49 HMAC_DIRECT(char *, hmac224hex, SHA224, SHA_FMT_HEX)
50 HMAC_DIRECT(char *, hmac224base64, SHA224, SHA_FMT_BASE64)
52 HMAC_DIRECT(unsigned char *, hmac256digest, SHA256, SHA_FMT_RAW)
53 HMAC_DIRECT(char *, hmac256hex, SHA256, SHA_FMT_HEX)
54 HMAC_DIRECT(char *, hmac256base64, SHA256, SHA_FMT_BASE64)
56 HMAC_DIRECT(unsigned char *, hmac384digest, SHA384, SHA_FMT_RAW)
57 HMAC_DIRECT(char *, hmac384hex, SHA384, SHA_FMT_HEX)
58 HMAC_DIRECT(char *, hmac384base64, SHA384, SHA_FMT_BASE64)
60 HMAC_DIRECT(unsigned char *, hmac512digest, SHA512, SHA_FMT_RAW)
61 HMAC_DIRECT(char *, hmac512hex, SHA512, SHA_FMT_HEX)
62 HMAC_DIRECT(char *, hmac512base64, SHA512, SHA_FMT_BASE64)