3#include "barretenberg/ecc/curves/bn254/fr.hpp"
12using hash = std::array<uint8_t, 32>;
14hash sha256_block(
const std::vector<uint8_t>& input);
16template <
typename T> hash sha256(
const T& input);
18extern template hash sha256<std::vector<uint8_t>>(
const std::vector<uint8_t>& input);
19extern template hash sha256<std::array<uint8_t, 32>>(
const std::array<uint8_t, 32>& input);
20extern template hash sha256<std::string>(
const std::string& input);
24 auto result = sha256::sha256(input);
25 return from_buffer<barretenberg::fr>(&result[0]);
28inline bool operator==(hash
const& lhs, std::vector<uint8_t>
const& rhs)
30 return std::equal(lhs.begin(), lhs.end(), rhs.begin());
36inline bool operator==(std::vector<uint8_t>
const& lhs, sha256::hash
const& rhs)
38 return std::equal(lhs.begin(), lhs.end(), rhs.begin());
41inline std::ostream& operator<<(std::ostream& os, sha256::hash
const& arr)
43 std::ios_base::fmtflags f(os.flags());
44 os << std::hex << std::setfill(
'0');
45 for (
auto byte : arr) {
46 os << std::setw(2) << +(
unsigned char)
byte;