1#ifndef BASE_HASH_CTXT_H
2#define BASE_HASH_CTXT_H
3
4#include "hash.h"
5
6#include <cstdint>
7
8#if defined(CONF_OPENSSL)
9#include <openssl/md5.h>
10#include <openssl/sha.h>
11#else
12#include <engine/external/md5/md5.h>
13#endif
14
15#if defined(CONF_OPENSSL)
16// SHA256_CTX is defined in <openssl/sha.h>
17#else
18struct SHA256_CTX
19{
20 uint64_t length;
21 uint32_t state[8];
22 uint32_t curlen;
23 unsigned char buf[64];
24};
25typedef md5_state_t MD5_CTX;
26#endif
27
28void sha256_init(SHA256_CTX *ctxt);
29void sha256_update(SHA256_CTX *ctxt, const void *data, size_t data_len);
30SHA256_DIGEST sha256_finish(SHA256_CTX *ctxt);
31
32void md5_init(MD5_CTX *ctxt); // NOLINT(readability-redundant-declaration, readability-inconsistent-declaration-parameter-name)
33void md5_update(MD5_CTX *ctxt, const void *data, size_t data_len);
34MD5_DIGEST md5_finish(MD5_CTX *ctxt);
35
36#endif // BASE_HASH_CTXT_H
37