26#ifndef MYSQLROUTER_ROUTING_OPENSSL_DIGEST_H
27#define MYSQLROUTER_ROUTING_OPENSSL_DIGEST_H
33#include <openssl/evp.h>
52 void operator()(EVP_MD_CTX *ctx) { EVP_MD_CTX_free(ctx); }
62 bool init(
const EVP_MD *digest_func) {
63 if (digest_func ==
nullptr)
return false;
65 auto res = EVP_DigestInit_ex(
ctx_.get(), digest_func,
nullptr);
75 return EVP_DigestUpdate(
ctx_.get(), data.data(), data.size());
82 return EVP_DigestFinal_ex(
83 ctx_.get(),
reinterpret_cast<unsigned char *
>(out.data()), &written);
89 std::unique_ptr<EVP_MD_CTX, Deleter>
ctx_{EVP_MD_CTX_new()};
Definition: openssl_digest.h:50
void operator()(EVP_MD_CTX *ctx)
Definition: openssl_digest.h:52
Definition: openssl_digest.h:48
std::unique_ptr< EVP_MD_CTX, Deleter > ctx_
Definition: openssl_digest.h:89
bool update(const T &data)
Definition: openssl_digest.h:74
bool init(DigestFunc func)
Definition: openssl_digest.h:71
const EVP_MD * digest_func_
Definition: openssl_digest.h:87
bool init(const EVP_MD *digest_func)
Definition: openssl_digest.h:62
DigestCtx(const DigestFunc &func)
Definition: openssl_digest.h:56
bool init()
Definition: openssl_digest.h:59
bool finalize(T &out)
Definition: openssl_digest.h:79
DigestCtx(const EVP_MD *func)
Definition: openssl_digest.h:55
Definition: openssl_digest.h:36
const EVP_MD * func_
Definition: openssl_digest.h:45
DigestFunc(const EVP_MD *func)
Definition: openssl_digest.h:38
int size() const
Definition: openssl_digest.h:40
const EVP_MD * native_func() const
Definition: openssl_digest.h:42
#define T
Definition: jit_executor_value.cc:373
Definition: openssl_digest.h:35