xref: /aosp_15_r20/external/cronet/base/hash/md5_boringssl.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2019 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 <string_view>
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/hash/md5.h"
8*6777b538SAndroid Build Coastguard Worker #include "base/strings/string_number_conversions.h"
9*6777b538SAndroid Build Coastguard Worker #include "base/strings/string_util.h"
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker namespace base {
MD5Init(MD5Context * context)12*6777b538SAndroid Build Coastguard Worker void MD5Init(MD5Context* context) {
13*6777b538SAndroid Build Coastguard Worker   MD5_Init(context);
14*6777b538SAndroid Build Coastguard Worker }
15*6777b538SAndroid Build Coastguard Worker 
MD5Update(MD5Context * context,std::string_view data)16*6777b538SAndroid Build Coastguard Worker void MD5Update(MD5Context* context, std::string_view data) {
17*6777b538SAndroid Build Coastguard Worker   MD5Update(context, base::as_byte_span(data));
18*6777b538SAndroid Build Coastguard Worker }
19*6777b538SAndroid Build Coastguard Worker 
MD5Update(MD5Context * context,base::span<const uint8_t> data)20*6777b538SAndroid Build Coastguard Worker void MD5Update(MD5Context* context, base::span<const uint8_t> data) {
21*6777b538SAndroid Build Coastguard Worker   MD5_Update(context, data.data(), data.size());
22*6777b538SAndroid Build Coastguard Worker }
23*6777b538SAndroid Build Coastguard Worker 
MD5Final(MD5Digest * digest,MD5Context * context)24*6777b538SAndroid Build Coastguard Worker void MD5Final(MD5Digest* digest, MD5Context* context) {
25*6777b538SAndroid Build Coastguard Worker   MD5_Final(digest->a, context);
26*6777b538SAndroid Build Coastguard Worker }
27*6777b538SAndroid Build Coastguard Worker 
MD5DigestToBase16(const MD5Digest & digest)28*6777b538SAndroid Build Coastguard Worker std::string MD5DigestToBase16(const MD5Digest& digest) {
29*6777b538SAndroid Build Coastguard Worker   return ToLowerASCII(HexEncode(digest.a, MD5_DIGEST_LENGTH));
30*6777b538SAndroid Build Coastguard Worker }
31*6777b538SAndroid Build Coastguard Worker 
MD5Sum(base::span<const uint8_t> data,MD5Digest * digest)32*6777b538SAndroid Build Coastguard Worker void MD5Sum(base::span<const uint8_t> data, MD5Digest* digest) {
33*6777b538SAndroid Build Coastguard Worker   MD5(data.data(), data.size(), digest->a);
34*6777b538SAndroid Build Coastguard Worker }
35*6777b538SAndroid Build Coastguard Worker 
MD5String(std::string_view str)36*6777b538SAndroid Build Coastguard Worker std::string MD5String(std::string_view str) {
37*6777b538SAndroid Build Coastguard Worker   MD5Digest digest;
38*6777b538SAndroid Build Coastguard Worker   MD5Sum(base::as_byte_span(str), &digest);
39*6777b538SAndroid Build Coastguard Worker   return MD5DigestToBase16(digest);
40*6777b538SAndroid Build Coastguard Worker }
41*6777b538SAndroid Build Coastguard Worker }  // namespace base
42