20 #ifndef _ANCH_CRYPTO_HASH_H_ 21 #define _ANCH_CRYPTO_HASH_H_ 40 template<std::
size_t O, std::
size_t B>
50 virtual const std::array<uint8_t,O>&
digest()
const = 0;
59 template<
class CharT,
class Traits,
class Allocator>
60 const std::array<uint8_t,O>&
digest(
const std::basic_string<CharT,Traits,Allocator>& data) {
62 addData(reinterpret_cast<const uint8_t*>(data.data()), data.length());
74 template<std::
size_t N>
75 const std::array<uint8_t,O>&
digest(
const std::array<uint8_t,N>& data) {
90 const std::array<uint8_t,O>&
digest(
const uint8_t* data, std::size_t len) {
104 template<
class CharT,
class Traits>
105 const std::array<uint8_t,O>&
digest(std::basic_istream<CharT,Traits>& stream) {
109 while(!stream.eof()) {
110 stream.read(data, 1024);
111 addData(reinterpret_cast<uint8_t*>(data), stream.gcount());
122 virtual void reset() = 0;
130 virtual void addData(
const uint8_t* data, std::size_t len) = 0;
174 template<
class CharT,
class Traits, std::
size_t O, std::
size_t B>
175 std::basic_ostream<CharT, Traits>&
177 std::ios_base::fmtflags flags = out.flags();
179 for(
const uint8_t& byte : hash.digest()) {
180 out << std::setfill('0') << std::setw(2) << static_cast<uint16_t>(byte);
186 #endif // _ANCH_CRYPTO_HASH_H_ virtual const std::array< uint8_t, O > & digest() const =0
const std::array< uint8_t, O > & digest(std::basic_istream< CharT, Traits > &stream)
Definition: hash.hpp:105
static constexpr std::size_t getBlockSize()
Definition: hash.hpp:155
AnCH framework base namespace.
Definition: base64.hpp:28
const std::array< uint8_t, O > & digest(const uint8_t *data, std::size_t len)
Definition: hash.hpp:90
static constexpr std::size_t getOutputSize()
Definition: hash.hpp:146
const std::array< uint8_t, O > & digest(const std::basic_string< CharT, Traits, Allocator > &data)
Definition: hash.hpp:60
Hash algorithm abstract class.
Definition: hash.hpp:41
virtual void addData(const uint8_t *data, std::size_t len)=0
virtual void finalize()=0
const std::array< uint8_t, O > & digest(const std::array< uint8_t, N > &data)
Definition: hash.hpp:75