1*f6dc9357SAndroid Build Coastguard Worker // HmacSha1.h 2*f6dc9357SAndroid Build Coastguard Worker // Implements HMAC-SHA-1 (RFC2104, FIPS-198) 3*f6dc9357SAndroid Build Coastguard Worker 4*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_CRYPTO_HMAC_SHA1_H 5*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_CRYPTO_HMAC_SHA1_H 6*f6dc9357SAndroid Build Coastguard Worker 7*f6dc9357SAndroid Build Coastguard Worker #include "Sha1Cls.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker namespace NCrypto { 10*f6dc9357SAndroid Build Coastguard Worker namespace NSha1 { 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker // Use: SetKey(key, keySize); for () Update(data, size); FinalFull(mac); 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker class CHmac 15*f6dc9357SAndroid Build Coastguard Worker { 16*f6dc9357SAndroid Build Coastguard Worker CContext _sha; 17*f6dc9357SAndroid Build Coastguard Worker CContext _sha2; 18*f6dc9357SAndroid Build Coastguard Worker public: 19*f6dc9357SAndroid Build Coastguard Worker void SetKey(const Byte *key, size_t keySize); Update(const Byte * data,size_t dataSize)20*f6dc9357SAndroid Build Coastguard Worker void Update(const Byte *data, size_t dataSize) { _sha.Update(data, dataSize); } 21*f6dc9357SAndroid Build Coastguard Worker 22*f6dc9357SAndroid Build Coastguard Worker // Final() : mac is recommended to be aligned for 4 bytes 23*f6dc9357SAndroid Build Coastguard Worker // GetLoopXorDigest1() : mac is required to be aligned for 4 bytes 24*f6dc9357SAndroid Build Coastguard Worker // The caller can use: UInt32 mac[NSha1::kNumDigestWords] and typecast to (Byte *) and (void *); 25*f6dc9357SAndroid Build Coastguard Worker void Final(Byte *mac); 26*f6dc9357SAndroid Build Coastguard Worker void GetLoopXorDigest1(void *mac, UInt32 numIteration); 27*f6dc9357SAndroid Build Coastguard Worker }; 28*f6dc9357SAndroid Build Coastguard Worker 29*f6dc9357SAndroid Build Coastguard Worker }} 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker #endif 32