#include "ob/crypto.hh" #include #include #include #include #include #include #include namespace OB::Crypto { std::optional sha256(std::string_view const str) { SHA256_CTX ctx; if (! SHA256_Init(&ctx)) return {}; if (! SHA256_Update(&ctx, str.data(), str.size())) return {}; std::array digest; if (! SHA256_Final(digest.data(), &ctx)) return {}; std::ostringstream res; res << std::hex << std::setfill('0'); for (auto const& e : digest) { res << std::setw(2) << static_cast(e); } return res.str(); } } // namespace OB::Crypto