1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 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 #include "crypto/sha2.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker #include <stddef.h>
8*6777b538SAndroid Build Coastguard Worker
9*6777b538SAndroid Build Coastguard Worker #include <memory>
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard Worker #include "crypto/secure_hash.h"
12*6777b538SAndroid Build Coastguard Worker #include "third_party/boringssl/src/include/openssl/sha.h"
13*6777b538SAndroid Build Coastguard Worker
14*6777b538SAndroid Build Coastguard Worker namespace crypto {
15*6777b538SAndroid Build Coastguard Worker
SHA256Hash(base::span<const uint8_t> input)16*6777b538SAndroid Build Coastguard Worker std::array<uint8_t, kSHA256Length> SHA256Hash(base::span<const uint8_t> input) {
17*6777b538SAndroid Build Coastguard Worker std::array<uint8_t, kSHA256Length> digest;
18*6777b538SAndroid Build Coastguard Worker ::SHA256(input.data(), input.size(), digest.data());
19*6777b538SAndroid Build Coastguard Worker return digest;
20*6777b538SAndroid Build Coastguard Worker }
21*6777b538SAndroid Build Coastguard Worker
SHA256HashString(std::string_view str,void * output,size_t len)22*6777b538SAndroid Build Coastguard Worker void SHA256HashString(std::string_view str, void* output, size_t len) {
23*6777b538SAndroid Build Coastguard Worker std::unique_ptr<SecureHash> ctx(SecureHash::Create(SecureHash::SHA256));
24*6777b538SAndroid Build Coastguard Worker ctx->Update(str.data(), str.length());
25*6777b538SAndroid Build Coastguard Worker ctx->Finish(output, len);
26*6777b538SAndroid Build Coastguard Worker }
27*6777b538SAndroid Build Coastguard Worker
SHA256HashString(std::string_view str)28*6777b538SAndroid Build Coastguard Worker std::string SHA256HashString(std::string_view str) {
29*6777b538SAndroid Build Coastguard Worker std::string output(kSHA256Length, 0);
30*6777b538SAndroid Build Coastguard Worker SHA256HashString(str, std::data(output), output.size());
31*6777b538SAndroid Build Coastguard Worker return output;
32*6777b538SAndroid Build Coastguard Worker }
33*6777b538SAndroid Build Coastguard Worker
34*6777b538SAndroid Build Coastguard Worker } // namespace crypto
35