#pragma once #include namespace visione::crypto { std::string sha256(const std::string &value); std::string hmacSha256Hex(const std::string &key, const std::string &value); bool constantTimeEquals(const std::string &left, const std::string &right); std::string randomNumericCode(int digits); std::string randomToken(); std::string hashSecret(const std::string &secret); } // namespace visione::crypto