//****************************************************************************** //* HMAC_SHA1.cpp : Implementation of HMAC SHA1 algorithm //* Comfort to RFC 2104 //* //****************************************************************************** #include #include #include "ICEHMAC.h" #include "ICESHA1.h" void ICEHMAC::GetDigest(unsigned char *text, int text_len, unsigned char *key, int key_len, unsigned char *digest) { memset(SHA1_Key, 0, SHA1_BLOCK_SIZE); /* repeated 64 times for values in ipad and opad */ memset(m_ipad, 0x36, sizeof(m_ipad)); memset(m_opad, 0x5c, sizeof(m_opad)); /* STEP 1 */ if (key_len > SHA1_DIGEST_LENGTH) { ICESHA1::Reset(); ICESHA1::Update((UINT_8 *)key, key_len); ICESHA1::Final(); ICESHA1::GetHash((UINT_8 *)SHA1_Key); } else memcpy(SHA1_Key, key, key_len); /* STEP 2 */ for (int i=0; i