4#ifndef _Stroika_Foundation_Cryptography_Digest_Algorithm_Algorithm_h_
5#define _Stroika_Foundation_Cryptography_Digest_Algorithm_Algorithm_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
11#include "Stroika/Foundation/Common/Common.h"
21namespace Stroika::Foundation::Cryptography::Digest::Algorithm {
26 template <
typename ALGORITHM>
37 virtual void Write (
const byte* start,
const byte* end) = 0;
43 template <
typename RESULT_TYPE>
46 virtual RESULT_TYPE Complete () = 0;
54 template <typename ALGORITHM, typename RETURN_TYPE = typename Algorithm::DigesterDefaultTraitsForAlgorithm<ALGORITHM>::ReturnType>
59 template <typename ALGORITHM, typename RETURN_TYPE = typename Algorithm::DigesterDefaultTraitsForAlgorithm<ALGORITHM>::ReturnType>
61 using ReturnType = RETURN_TYPE;
70 virtual void Write (
const byte* start,
const byte* end)
override;
73 virtual ReturnType Complete ()
override;
DigesterAlgorithm is specialized for each algorithm; generally don't use this directly,...