25#ifndef MYSQLROUTER_DIGEST_INCLUDED
26#define MYSQLROUTER_DIGEST_INCLUDED
37#include <openssl/evp.h>
72 EVP_MD_CTX_reset(
ctx_.get());
81 void update(
const std::span<const uint8_t> &data) {
82 EVP_DigestUpdate(
ctx_.get(), data.data(), data.size());
85 void update(
const std::string_view &data) {
86 EVP_DigestUpdate(
ctx_.get(), data.data(), data.length());
115 return EVP_MD_size(dg);
118 throw std::invalid_argument(
"type wasn't part of Type");
123 template <
typename Container>
127 unsigned int out_len{
static_cast<unsigned int>(std::min(
131 EVP_DigestFinal_ex(
ctx_.get(),
reinterpret_cast<uint8_t *
>(&out[0]),
message digest.
Definition: digest.h:53
void update(const char *data, size_t length)
Definition: digest.h:89
void finalize(std::vector< uint8_t > &out)
finalize the digest and get digest value.
Definition: digest.h:98
static size_t digest_size(Type type)
get size of the digest value.
Definition: digest.h:113
Type type_
Definition: digest.h:154
void finalize(std::string &out)
finalize the digest and get digest value.
Definition: digest.h:105
void update(const std::span< const uint8_t > &data)
update Digest.
Definition: digest.h:81
static const EVP_MD * get_evp_md(Type type) noexcept
Definition: digest.h:136
std::unique_ptr< EVP_MD_CTX, decltype(&EVP_MD_CTX_free)> ctx_
Definition: digest.h:155
void finalize_impl(Container &out)
Definition: digest.h:124
Type
Definition: digest.h:55
void reinit()
initialize or reinitialize the message digest functions.
Definition: digest.h:71
void update(const std::string_view &data)
Definition: digest.h:85
Digest(Type type)
constructor.
Definition: digest.h:62
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
ValueType max(X &&first)
Definition: gtid.h:103
std::conditional_t< !std::is_array< T >::value, std::unique_ptr< T, detail::Deleter< T > >, std::conditional_t< detail::is_unbounded_array_v< T >, std::unique_ptr< T, detail::Array_deleter< std::remove_extent_t< T > > >, void > > unique_ptr
The following is a common type that is returned by all the ut::make_unique (non-aligned) specializati...
Definition: ut0new.h:2284
required string type
Definition: replication_group_member_actions.proto:34