// Copyright 2025 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/sha2.h"

#include <string>

#include "base/strings/string_number_conversions.h"
#include "util/test/test.h"

namespace base {

namespace {

std::string Sha256AsHexString(std::string_view in) {
  std::array<uint8_t, kSha256Length> result = Sha256(in);
  return HexEncode(result.data(), result.size());
}

TEST(Sha2Test, Basic) {
  EXPECT_EQ("E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
            Sha256AsHexString(""));

  // Reference values from
  // https://csrc.nist.gov/csrc/media/projects/cryptographic-standards-and-guidelines/documents/examples/sha256.pdf
  EXPECT_EQ("BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD",
            Sha256AsHexString("abc"));
  EXPECT_EQ("248D6A61D20638B8E5C026930C3E6039A33CE45964FF2167F6ECEDD419DB06C1",
            Sha256AsHexString(
                "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"));
  // Additional tests from
  // https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/SHA2_Additional.pdf
  EXPECT_EQ("68325720AABD7C82F30F554B313D0570C95ACCBB7DC4B5AAE11204C08FFE732B",
            Sha256AsHexString("\xbd"));
  EXPECT_EQ("7ABC22C0AE5AF26CE93DBB94433A0E0B2E119D014F8E7F65BD56C61CCCCD9504",
            Sha256AsHexString("\xc9\x8c\x8e\x55"));
  EXPECT_EQ("02779466CDEC163811D078815C633F21901413081449002F24AA3E80F0B88EF7",
      Sha256AsHexString(std::string(55, '\0')));
  EXPECT_EQ("D4817AA5497628E7C77E6B606107042BBBA3130888C5F47A375E6179BE789FBB",
      Sha256AsHexString(std::string(56, '\0')));
  EXPECT_EQ("65A16CB7861335D5ACE3C60718B5052E44660726DA4CD13BB745381B235A1785",
      Sha256AsHexString(std::string(57, '\0')));
  EXPECT_EQ("F5A5FD42D16A20302798EF6ED309979B43003D2320D9F0E8EA9831A92759FB4B",
      Sha256AsHexString(std::string(64, '\0')));
  EXPECT_EQ("541B3E9DAA09B20BF85FA273E5CBD3E80185AA4EC298E765DB87742B70138A53",
      Sha256AsHexString(std::string(1000, '\0')));
  EXPECT_EQ("C2E686823489CED2017F6059B8B239318B6364F6DCD835D0A519105A1EADD6E4",
      Sha256AsHexString(std::string(1000, 'A')));
  EXPECT_EQ("F4D62DDEC0F3DD90EA1380FA16A5FF8DC4C54B21740650F24AFC4120903552B0",
      Sha256AsHexString(std::string(1005, 'U')));
  EXPECT_EQ("D29751F2649B32FF572B5E0A9F541EA660A50F94FF0BEEDFB0B692B924CC8025",
      Sha256AsHexString(std::string(1000000, '\0')));
}

}  // namespace

}  // namespace base
