xref: /aosp_15_r20/external/lzma/CPP/7zip/Crypto/HmacSha256.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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