| // HmacSha1.h |
| // Implements HMAC-SHA-1 (RFC2104, FIPS-198) |
| |
| #ifndef ZIP7_INC_CRYPTO_HMAC_SHA1_H |
| #define ZIP7_INC_CRYPTO_HMAC_SHA1_H |
| |
| #include "Sha1Cls.h" |
| |
| namespace NCrypto { |
| namespace NSha1 { |
| |
| // Use: SetKey(key, keySize); for () Update(data, size); FinalFull(mac); |
| |
| 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); } |
| |
| // Final() : mac is recommended to be aligned for 4 bytes |
| // GetLoopXorDigest1() : mac is required to be aligned for 4 bytes |
| // The caller can use: UInt32 mac[NSha1::kNumDigestWords] and typecast to (Byte *) and (void *); |
| void Final(Byte *mac); |
| void GetLoopXorDigest1(void *mac, UInt32 numIteration); |
| }; |
| |
| }} |
| |
| #endif |