1*6777b538SAndroid Build Coastguard Worker // Copyright 2021 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_HASH_SHA1_NACL_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_HASH_SHA1_NACL_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <stdint.h> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker namespace base { 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker // Used for storing intermediate data during an SHA1 computation. Callers 13*6777b538SAndroid Build Coastguard Worker // should not access the data. 14*6777b538SAndroid Build Coastguard Worker class SHA1Context { 15*6777b538SAndroid Build Coastguard Worker public: 16*6777b538SAndroid Build Coastguard Worker void Init(); 17*6777b538SAndroid Build Coastguard Worker void Update(const void* data, size_t nbytes); 18*6777b538SAndroid Build Coastguard Worker void Final(); 19*6777b538SAndroid Build Coastguard Worker const unsigned char* GetDigest() const; 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker private: 22*6777b538SAndroid Build Coastguard Worker void Pad(); 23*6777b538SAndroid Build Coastguard Worker void Process(); 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker uint32_t A, B, C, D, E; 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker uint32_t H[5]; 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker union { 30*6777b538SAndroid Build Coastguard Worker uint32_t W[80]; 31*6777b538SAndroid Build Coastguard Worker uint8_t M[64]; 32*6777b538SAndroid Build Coastguard Worker }; 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker uint32_t cursor; 35*6777b538SAndroid Build Coastguard Worker uint64_t l; 36*6777b538SAndroid Build Coastguard Worker }; 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker } // namespace base 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker #endif // BASE_HASH_SHA1_NACL_H_ 41