xref: /aosp_15_r20/external/cronet/base/hash/sha1_nacl.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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