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