xref: /aosp_15_r20/external/cronet/base/hash/md5_boringssl.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2019 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include <string_view>
6 
7 #include "base/hash/md5.h"
8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/string_util.h"
10 
11 namespace base {
MD5Init(MD5Context * context)12 void MD5Init(MD5Context* context) {
13   MD5_Init(context);
14 }
15 
MD5Update(MD5Context * context,std::string_view data)16 void MD5Update(MD5Context* context, std::string_view data) {
17   MD5Update(context, base::as_byte_span(data));
18 }
19 
MD5Update(MD5Context * context,base::span<const uint8_t> data)20 void MD5Update(MD5Context* context, base::span<const uint8_t> data) {
21   MD5_Update(context, data.data(), data.size());
22 }
23 
MD5Final(MD5Digest * digest,MD5Context * context)24 void MD5Final(MD5Digest* digest, MD5Context* context) {
25   MD5_Final(digest->a, context);
26 }
27 
MD5DigestToBase16(const MD5Digest & digest)28 std::string MD5DigestToBase16(const MD5Digest& digest) {
29   return ToLowerASCII(HexEncode(digest.a, MD5_DIGEST_LENGTH));
30 }
31 
MD5Sum(base::span<const uint8_t> data,MD5Digest * digest)32 void MD5Sum(base::span<const uint8_t> data, MD5Digest* digest) {
33   MD5(data.data(), data.size(), digest->a);
34 }
35 
MD5String(std::string_view str)36 std::string MD5String(std::string_view str) {
37   MD5Digest digest;
38   MD5Sum(base::as_byte_span(str), &digest);
39   return MD5DigestToBase16(digest);
40 }
41 }  // namespace base
42