Introduction
This is my first article on CodeProject. Sorry for my poor English.
The reason I think it might be helpful that I share this HMAC-SHA1
class is because I found no related source I could refer to. This is a simple C++ class of HMAC-SHA1
with only single byte character support. You could add double bytes character support if needed. You will find this class contains only a function HMAC_SHA1
that accept test input and hash key, then generates a digest.
Background
Thanks to Dominik Reichl, the SHA1 class I wrapped is from his amazing class. I simply implemented the HMAC algorithm on it. For MD5, you could refer to RFC. There is a detailed programming flow of it.
Using the Code
The usage of this class is extremely simple. Declare CHMAC_SHA1
, call its HMAC_SHA1
function. That's it!
You may use HMAC-SHA1
in RFC 2202 test case to verify your implementation.
Following is test case 1 in RFC 2202.
#include "HMAC_SHA1.h"
BYTE Key[20] ;
BYTE digest[20] ;
unsigned char *test = "Hi There" ;
memset(Key, 0x0b, 20) ;
CHMAC_SHA1 HMAC_SHA1 ;
HMAC_SHA1.HMAC_SHA1(test, strlen(test), Key, sizeof(Key), digest) ;
History
- 2007/12/17: Updated sample code with RFC 2202 test case 1