1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 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_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_HASH_SHA1_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <stddef.h> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include <array> 11*6777b538SAndroid Build Coastguard Worker #include <string> 12*6777b538SAndroid Build Coastguard Worker #include <string_view> 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker #include "base/base_export.h" 15*6777b538SAndroid Build Coastguard Worker #include "base/containers/span.h" 16*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 17*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_NACL) 18*6777b538SAndroid Build Coastguard Worker #include "base/hash/sha1_nacl.h" 19*6777b538SAndroid Build Coastguard Worker #else 20*6777b538SAndroid Build Coastguard Worker #include "base/hash/sha1_boringssl.h" 21*6777b538SAndroid Build Coastguard Worker #endif 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker namespace base { 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker enum { kSHA1Length = 20 }; // Length in bytes of a SHA-1 hash. 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker // The output of an SHA-1 operation. 28*6777b538SAndroid Build Coastguard Worker using SHA1Digest = std::array<uint8_t, kSHA1Length>; 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker // These functions perform SHA-1 operations. 31*6777b538SAndroid Build Coastguard Worker // Computes the SHA-1 hash of the input |data| and returns the full hash. 32*6777b538SAndroid Build Coastguard Worker BASE_EXPORT SHA1Digest SHA1HashSpan(span<const uint8_t> data); 33*6777b538SAndroid Build Coastguard Worker // Computes the SHA-1 hash of the input string |str| and returns the full 34*6777b538SAndroid Build Coastguard Worker // hash. 35*6777b538SAndroid Build Coastguard Worker BASE_EXPORT std::string SHA1HashString(std::string_view str); 36*6777b538SAndroid Build Coastguard Worker // Computes the SHA-1 hash of the |len| bytes in |data| and puts the hash 37*6777b538SAndroid Build Coastguard Worker // in |hash|. |hash| must be kSHA1Length bytes long. 38*6777b538SAndroid Build Coastguard Worker BASE_EXPORT void SHA1HashBytes(const unsigned char* data, 39*6777b538SAndroid Build Coastguard Worker size_t len, 40*6777b538SAndroid Build Coastguard Worker unsigned char* hash); 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker // These functions allow streaming SHA-1 operations. 43*6777b538SAndroid Build Coastguard Worker BASE_EXPORT void SHA1Init(SHA1Context& context); 44*6777b538SAndroid Build Coastguard Worker BASE_EXPORT void SHA1Update(const std::string_view data, SHA1Context& context); 45*6777b538SAndroid Build Coastguard Worker BASE_EXPORT void SHA1Final(SHA1Context& context, SHA1Digest& digest); 46*6777b538SAndroid Build Coastguard Worker } // namespace base 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker #endif // BASE_HASH_SHA1_H_ 49