#pragma once #include namespace Secure{ // MD5 hashing functions std::string md5(std::string input); std::string md5(const char *input, const unsigned int in_len); void md5bin(const char *input, const unsigned int in_len, char *output); // SHA256 hashing functions std::string sha256(std::string input); std::string sha256(const char *input, const unsigned int in_len); void sha256bin(const char *input, const unsigned int in_len, char *output); // Generic HMAC functions std::string hmac(std::string msg, std::string key, unsigned int hashSize, void hasher(const char *, const unsigned int, char *), unsigned int blockSize); std::string hmac(const char *msg, const unsigned int msg_len, const char *key, const unsigned int key_len, unsigned int hashSize, void hasher(const char *, const unsigned int, char *), unsigned int blockSize); void hmacbin(const char *msg, const unsigned int msg_len, const char *key, const unsigned int key_len, unsigned int hashSize, void hasher(const char *, const unsigned int, char *), unsigned int blockSize, char *output); // Specific HMAC functions std::string hmac_sha256(std::string msg, std::string key); std::string hmac_sha256(const char *msg, const unsigned int msg_len, const char *key, const unsigned int key_len); void hmac_sha256bin(const char *msg, const unsigned int msg_len, const char *key, const unsigned int key_len, char *output); }// namespace Secure