ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
hmac_sha256.h
Go to the documentation of this file.
1#pragma once
2
4#if defined(USE_ESP32) || defined(USE_ESP8266) || defined(USE_RP2040) || defined(USE_LIBRETINY) || defined(USE_HOST)
5
6#include <string>
7
8#if defined(USE_ESP32) || defined(USE_LIBRETINY)
9#include "mbedtls/md.h"
10#else
12#endif
13
14namespace esphome::hmac_sha256 {
15
17 public:
18 HmacSHA256() = default;
20
22 void init(const uint8_t *key, size_t len);
23 void init(const char *key, size_t len) { this->init((const uint8_t *) key, len); }
24 void init(const std::string &key) { this->init(key.c_str(), key.length()); }
25
27 void add(const uint8_t *data, size_t len);
28 void add(const char *data, size_t len) { this->add((const uint8_t *) data, len); }
29
31 void calculate();
32
35 void get_bytes(uint8_t *output);
36
39 void get_hex(char *output);
40
42 bool equals_bytes(const uint8_t *expected);
43
45 bool equals_hex(const char *expected);
46
47 protected:
48#if defined(USE_ESP32) || defined(USE_LIBRETINY)
49 static constexpr size_t SHA256_DIGEST_SIZE = 32;
50 mbedtls_md_context_t ctx_{};
52#else
55#endif
56};
57
58} // namespace esphome::hmac_sha256
59#endif
bool equals_bytes(const uint8_t *expected)
Compare the digest against a provided byte-encoded digest (32 bytes).
mbedtls_md_context_t ctx_
Definition hmac_sha256.h:50
uint8_t digest_[SHA256_DIGEST_SIZE]
Definition hmac_sha256.h:51
static constexpr size_t SHA256_DIGEST_SIZE
Definition hmac_sha256.h:49
bool equals_hex(const char *expected)
Compare the digest against a provided hex-encoded digest (64 bytes).
void add(const char *data, size_t len)
Definition hmac_sha256.h:28
void add(const uint8_t *data, size_t len)
Add bytes of data for the digest.
void get_hex(char *output)
Retrieve the HMAC-SHA256 digest as hex characters.
void get_bytes(uint8_t *output)
Retrieve the HMAC-SHA256 digest as bytes.
void init(const std::string &key)
Definition hmac_sha256.h:24
void calculate()
Compute the digest, based on the provided data.
void init(const uint8_t *key, size_t len)
Initialize a new HMAC-SHA256 digest computation.
void init(const char *key, size_t len)
Definition hmac_sha256.h:23
std::string size_t len
Definition helpers.h:533