#pragma once #include #include #include #include class OpenSSLException : public std::exception { public: OpenSSLException(unsigned long e) { ERR_error_string_n(e, this->_str, 1024); } const char* what() const noexcept { return this->_str; } private: char _str[1024]; }; std::vector secure_random_bytes(int num); std::array hmac_sha3_256(const std::vector& key, const std::vector& data);