15 #include <openssl/hmac.h> 16 #include <openssl/objects.h> 40 hmac(
const hash_algorithms p_hash_algorithms): _ctx{}, _hash_algorithms(p_hash_algorithms) { ::HMAC_CTX_init(&_ctx); };
44 virtual ~hmac() { ::HMAC_CTX_cleanup(&_ctx); };
55 inline int generate(
const std::vector<unsigned char> p_buffer,
const std::vector<unsigned char> p_secret_key, std::vector<unsigned char>& p_hmac) {
57 if (p_buffer.size() == 0) {
61 return generate(p_buffer.data(), p_buffer.size(), p_secret_key.data(), p_secret_key.size(), p_hmac);
75 inline int generate(
const unsigned char *p_buffer,
const size_t p_buffer_length,
const unsigned char *p_secret_key,
const size_t p_secret_key_length, std::vector<unsigned char>& p_hmac) {
77 if ((p_buffer ==
nullptr) || (p_secret_key ==
nullptr)) {
81 p_hmac.resize(EVP_MAX_MD_SIZE);
83 ::HMAC_Init_ex(&_ctx, (
const void*)p_secret_key, (
long unsigned int)p_secret_key_length, EVP_sha256(), NULL);
85 ::HMAC_Init_ex(&_ctx, (
const void*)p_secret_key, (
long unsigned int)p_secret_key_length, EVP_sha384(), NULL);
90 ::HMAC_Update(&_ctx, p_buffer, p_buffer_length);
91 unsigned int length = p_hmac.size();
92 ::HMAC_Final(&_ctx, static_cast<unsigned char*>(p_hmac.data()), &length);
hmac(const hash_algorithms p_hash_algorithms)
Default constructor Create a new instance of the hmac class.
Definition: hmac.hh:40
HMAC_CTX _ctx
Definition: hmac.hh:32
hash_algorithms
Definition: hmac.hh:21
int generate(const std::vector< unsigned char > p_buffer, const std::vector< unsigned char > p_secret_key, std::vector< unsigned char > &p_hmac)
Generate the HMAC of data using a secret key [in] p_buffer The data tobe hashed.
Definition: hmac.hh:55
This class provides description of HMAC helper methods.
Definition: hmac.hh:31
int generate(const unsigned char *p_buffer, const size_t p_buffer_length, const unsigned char *p_secret_key, const size_t p_secret_key_length, std::vector< unsigned char > &p_hmac)
Generate the HMAC of data using a secret key.
Definition: hmac.hh:75
virtual ~hmac()
Default destructor.
Definition: hmac.hh:44
hash_algorithms _hash_algorithms
HMAC context.
Definition: hmac.hh:33