4#ifndef _Stroika_Foundation_Cryptography_Digest_Hash_h_
5#define _Stroika_Foundation_Cryptography_Digest_Hash_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
12#include "Stroika/Foundation/DataExchange/DefaultSerializer.h"
25namespace Stroika::Foundation::Cryptography::Digest {
40 using ReturnType = size_t;
43 ReturnType operator() (
const byte* from,
const byte* to)
const;
44 ReturnType operator() (
const BLOB& from)
const;
154 template <
typename T,
typename DIGESTER = DefaultHashDigester,
typename HASH_RETURN_TYPE =
typename DIGESTER::ReturnType,
typename SERIALIZER = DataExchange::DefaultSerializer<T>>
161 constexpr Hash (
const T& seed);
165 HASH_RETURN_TYPE operator() (
const T& t)
const;
167 optional<HASH_RETURN_TYPE> fSeed;
175 template <
typename RESULT_TYPE>
176 RESULT_TYPE HashValueCombine (RESULT_TYPE lhs, RESULT_TYPE rhs);
Digester<ALGORITHM> is a function-object way to access the digest algorithm. Its generally almost the...
Simple wrapper on (cryptographic) digest algorithms with fewer knobs, and easier construcion- mimicin...
use std::hash<T> to digest a type t. AKA stdhash_Digester