• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "base/hash/md5.h"
6 
7 #include "base/strings/string_number_conversions.h"
8 #include "base/strings/string_util.h"
9 
10 namespace base {
MD5Init(MD5Context * context)11 void MD5Init(MD5Context* context) {
12   MD5_Init(context);
13 }
14 
MD5Update(MD5Context * context,const StringPiece & data)15 void MD5Update(MD5Context* context, const StringPiece& data) {
16   MD5_Update(context, reinterpret_cast<const uint8_t*>(data.data()),
17              data.size());
18 }
19 
MD5Final(MD5Digest * digest,MD5Context * context)20 void MD5Final(MD5Digest* digest, MD5Context* context) {
21   MD5_Final(digest->a, context);
22 }
23 
MD5DigestToBase16(const MD5Digest & digest)24 std::string MD5DigestToBase16(const MD5Digest& digest) {
25   return ToLowerASCII(HexEncode(digest.a, MD5_DIGEST_LENGTH));
26 }
27 
MD5Sum(const void * data,size_t length,MD5Digest * digest)28 void MD5Sum(const void* data, size_t length, MD5Digest* digest) {
29   MD5(reinterpret_cast<const uint8_t*>(data), length, digest->a);
30 }
31 
MD5String(const StringPiece & str)32 std::string MD5String(const StringPiece& str) {
33   MD5Digest digest;
34   MD5Sum(str.data(), str.size(), &digest);
35   return MD5DigestToBase16(digest);
36 }
37 }  // namespace base
38