ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
md5.h
Go to the documentation of this file.
1#pragma once
2
4#ifdef USE_MD5
5
7
8#ifdef USE_HOST
9#include <openssl/evp.h>
10#endif
11
12#ifdef USE_ESP32
13#include "esp_rom_md5.h"
14#define MD5_CTX_TYPE md5_context_t
15#endif
16
17#if defined(USE_ARDUINO) && defined(USE_ESP8266)
18#include <md5.h>
19#define MD5_CTX_TYPE md5_context_t
20#endif
21
22#ifdef USE_RP2040
23#include <MD5Builder.h>
24#define MD5_CTX_TYPE br_md5_context
25#endif
26
27#if defined(USE_LIBRETINY)
28#include <MD5.h>
29#define MD5_CTX_TYPE LT_MD5_CTX_T
30#endif
31
32namespace esphome::md5 {
33
34class MD5Digest final : public HashBase {
35 public:
36 MD5Digest() = default;
37 ~MD5Digest() override;
38
40 void init() override;
41
43 void add(const uint8_t *data, size_t len) override;
44 using HashBase::add; // Bring base class overload into scope
45
47 void calculate() override;
48
50 size_t get_size() const override { return 16; }
51
52 protected:
53#ifdef USE_HOST
54 EVP_MD_CTX *ctx_{nullptr};
55 bool calculated_{false};
56#else
57 MD5_CTX_TYPE ctx_{};
58#endif
59};
60
61} // namespace esphome::md5
62
63#endif
Base class for hash algorithms.
Definition hash_base.h:11
virtual void add(const uint8_t *data, size_t len)=0
Add bytes of data for the hash.
void calculate() override
Compute the digest, based on the provided data.
Definition md5.cpp:16
EVP_MD_CTX * ctx_
Definition md5.h:54
size_t get_size() const override
Get the size of the hash in bytes (16 for MD5)
Definition md5.h:50
void add(const uint8_t *data, size_t len) override
Add bytes of data for the digest.
Definition md5.cpp:14
void init() override
Initialize a new MD5 digest computation.
Definition md5.cpp:9
~MD5Digest() override
Definition md5.cpp:42
const void size_t len
Definition hal.h:64