1*f6dc9357SAndroid Build Coastguard Worker // HmacSha256.h 2*f6dc9357SAndroid Build Coastguard Worker // Implements HMAC-SHA-256 (RFC2104, FIPS-198) 3*f6dc9357SAndroid Build Coastguard Worker 4*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_CRYPTO_HMAC_SHA256_H 5*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_CRYPTO_HMAC_SHA256_H 6*f6dc9357SAndroid Build Coastguard Worker 7*f6dc9357SAndroid Build Coastguard Worker #include "../../../C/Sha256.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker namespace NCrypto { 10*f6dc9357SAndroid Build Coastguard Worker namespace NSha256 { 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockSize = SHA256_BLOCK_SIZE; 13*f6dc9357SAndroid Build Coastguard Worker const unsigned kDigestSize = SHA256_DIGEST_SIZE; 14*f6dc9357SAndroid Build Coastguard Worker 15*f6dc9357SAndroid Build Coastguard Worker class CHmac 16*f6dc9357SAndroid Build Coastguard Worker { 17*f6dc9357SAndroid Build Coastguard Worker CSha256 _sha; 18*f6dc9357SAndroid Build Coastguard Worker CSha256 _sha2; 19*f6dc9357SAndroid Build Coastguard Worker public: 20*f6dc9357SAndroid Build Coastguard Worker void SetKey(const Byte *key, size_t keySize); Update(const Byte * data,size_t dataSize)21*f6dc9357SAndroid Build Coastguard Worker void Update(const Byte *data, size_t dataSize) { Sha256_Update(&_sha, data, dataSize); } 22*f6dc9357SAndroid Build Coastguard Worker void Final(Byte *mac); 23*f6dc9357SAndroid Build Coastguard Worker }; 24*f6dc9357SAndroid Build Coastguard Worker 25*f6dc9357SAndroid Build Coastguard Worker }} 26*f6dc9357SAndroid Build Coastguard Worker 27*f6dc9357SAndroid Build Coastguard Worker #endif 28