25#ifndef MYSQLROUTER_DIGEST_INCLUDED 
   26#define MYSQLROUTER_DIGEST_INCLUDED 
   37#include <openssl/evp.h> 
   65#
if defined(OPENSSL_VERSION_NUMBER) && \
 
   67    EVP_MD_CTX_new(), &EVP_MD_CTX_free
 
   69    EVP_MD_CTX_create(), &EVP_MD_CTX_destroy
 
   80#if defined(OPENSSL_VERSION_NUMBER) && \ 
   81    (OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 0)) 
   82    EVP_MD_CTX_reset(
ctx_.get());
 
   84    EVP_MD_CTX_cleanup(
ctx_.get());
 
   94  void update(
const std::span<const uint8_t> &data) {
 
   95    EVP_DigestUpdate(
ctx_.get(), data.data(), data.size());
 
   98  void update(
const std::string_view &data) {
 
   99    EVP_DigestUpdate(
ctx_.get(), data.data(), data.length());
 
  128      return EVP_MD_size(dg);
 
  131      throw std::invalid_argument(
"type wasn't part of Type");
 
  136  template <
typename Container>
 
  140    unsigned int out_len{
static_cast<unsigned int>(std::min(
 
  144    EVP_DigestFinal_ex(
ctx_.get(), 
reinterpret_cast<uint8_t *
>(&out[0]),
 
  169#if defined(OPENSSL_VERSION_NUMBER) && \ 
  170    (OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 0)) 
message digest.
Definition: digest.h:55
 
void update(const char *data, size_t length)
Definition: digest.h:102
 
void finalize(std::vector< uint8_t > &out)
finalize the digest and get digest value.
Definition: digest.h:111
 
static size_t digest_size(Type type)
get size of the digest value.
Definition: digest.h:126
 
Type type_
Definition: digest.h:167
 
void finalize(std::string &out)
finalize the digest and get digest value.
Definition: digest.h:118
 
void update(const std::span< const uint8_t > &data)
update Digest.
Definition: digest.h:94
 
static const EVP_MD * get_evp_md(Type type) noexcept
Definition: digest.h:149
 
void finalize_impl(Container &out)
Definition: digest.h:137
 
Type
Definition: digest.h:57
 
void reinit()
initialize or reinitialize the message digest functions.
Definition: digest.h:79
 
std::unique_ptr< EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)> ctx_
Definition: digest.h:176
 
void update(const std::string_view &data)
Definition: digest.h:98
 
Digest(Type type)
constructor.
Definition: digest.h:64
 
if(!(yy_init))
Definition: lexyy.cc:1144
 
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:2444
 
#define ROUTER_OPENSSL_VERSION(MAJOR, MINOR, FIX)
build openssl version (pre-releases and stable).
Definition: openssl_version.h:60
 
required string type
Definition: replication_group_member_actions.proto:34