1 #include "ostree_hash.h"
8 std::array<uint8_t, 32> sha256{};
9 std::string trimmed_hash = hash.substr(0, hash.find_last_not_of(
" \t\n\r\f\v") + 1);
11 std::istringstream refstr(trimmed_hash);
13 if (trimmed_hash.size() != 64) {
14 std::cout <<
"HASH size: " << trimmed_hash.size() <<
"\n";
18 for (
size_t i = 0; i < sha256.size(); i++) {
19 std::array<char, 3> byte_string{};
23 refstr.read(byte_string.data(), 2);
25 byte_holder = strtoul(byte_string.data(), &next_char, 16);
26 if (next_char != &byte_string[2]) {
29 sha256[i] = byte_holder & 0xFF;
35 OSTreeHash::OSTreeHash(
const uint8_t hash[32]) { std::memcpy(hash_.data(), hash, hash_.size()); }
37 OSTreeHash::OSTreeHash(
const std::array<uint8_t, 32>& hash) { std::memcpy(hash_.data(), hash.data(), hash.size()); }
39 std::string OSTreeHash::string()
const {
40 std::stringstream str_str;
44 for (
size_t i = 0; i < hash_.size(); i++) {
46 str_str << std::setw(2) << std::hex << static_cast<uint64_t>(hash_[i]);
51 bool OSTreeHash::operator<(
const OSTreeHash& other)
const {
52 return memcmp(hash_.data(), other.hash_.data(), hash_.size()) < 0;
55 std::ostream& operator<<(std::ostream& os,
const OSTreeHash& obj) {