// HmacSha1.h // Implements HMAC-SHA-1 (RFC2104, FIPS-198) #ifndef __CRYPTO_HMAC_SHA1_H #define __CRYPTO_HMAC_SHA1_H #include "Sha1.h" namespace NCrypto { namespace NSha1 { // Use: SetKey(key, keySize); for () Update(data, size); Final(mac, macSize); class CHmac { CContext _sha; CContext _sha2; public: void SetKey(const Byte *key, size_t keySize); void Update(const Byte *data, size_t dataSize) { _sha.Update(data, dataSize); } void Final(Byte *mac, size_t macSize = kDigestSize); }; class CHmac32 { CContext32 _sha; CContext32 _sha2; public: void SetKey(const Byte *key, size_t keySize); void Update(const UInt32 *data, size_t dataSize) { _sha.Update(data, dataSize); } void Final(UInt32 *mac, size_t macSize = kDigestSizeInWords); // It'sa for hmac function. in,out: mac[kDigestSizeInWords]. void GetLoopXorDigest(UInt32 *mac, UInt32 numIteration); }; }} #endif