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.
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.
BYTE Key ;
BYTE digest ;
unsigned char *test = "Hi There" ;
memset(Key, 0x0b, 20) ;
CHMAC_SHA1 HMAC_SHA1 ;
HMAC_SHA1.HMAC_SHA1(test, strlen(test), Key, sizeof(Key), digest) ;
- 2007/12/17: Updated sample code with RFC 2202 test case 1