md5_boringssl.cc 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // Copyright (c) 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/hash/md5.h"
  5. #include "base/strings/string_number_conversions.h"
  6. #include "base/strings/string_util.h"
  7. namespace base {
  8. void MD5Init(MD5Context* context) {
  9. MD5_Init(context);
  10. }
  11. void MD5Update(MD5Context* context, const StringPiece& data) {
  12. MD5_Update(context, reinterpret_cast<const uint8_t*>(data.data()),
  13. data.size());
  14. }
  15. void MD5Final(MD5Digest* digest, MD5Context* context) {
  16. MD5_Final(digest->a, context);
  17. }
  18. std::string MD5DigestToBase16(const MD5Digest& digest) {
  19. return ToLowerASCII(HexEncode(digest.a, MD5_DIGEST_LENGTH));
  20. }
  21. void MD5Sum(const void* data, size_t length, MD5Digest* digest) {
  22. MD5(reinterpret_cast<const uint8_t*>(data), length, digest->a);
  23. }
  24. std::string MD5String(const StringPiece& str) {
  25. MD5Digest digest;
  26. MD5Sum(str.data(), str.size(), &digest);
  27. return MD5DigestToBase16(digest);
  28. }
  29. } // namespace base