5#ifndef DIGESTPP_PROVIDERS_K12M14_HPP
6#define DIGESTPP_PROVIDERS_K12M14_HPP
25template<
size_t B, kangaroo_type type>
33 static_assert(B == 128 || B == 256,
"K12M14 only supports 128 and 256 bits");
55 inline void update(
const unsigned char* data,
size_t len)
58 [
this](
const unsigned char* data,
size_t len) { transform(data, len, len * 8192); });
65 unsigned char buf[B / 4];
68 update(
reinterpret_cast<const unsigned char*
>(S.data()), S.length());
74 main.update(m.data(), pos);
75 main.set_suffix(0x07);
79 child.update(m.data(), pos);
80 child.squeeze(buf, B / 4);
81 main.update(buf, B / 4);
82 main.set_suffix(0x06);
84 main.update(buf, len);
85 main.update(
reinterpret_cast<const unsigned char*
>(
"\xFF\xFF"), 2);
89 main.set_suffix(0x07);
92 main.squeeze(
hash, hs);
95 inline void transform(
const unsigned char* data, uint64_t num_blks,
size_t reallen)
99 for (uint64_t blk = 0; blk < num_blks; blk++)
103 main.update(data, 8192);
104 main.update(
reinterpret_cast<const unsigned char*
>(
"\x03\x00\x00\x00\x00\x00\x00\x00"), 8);
108 child.update(data, 8192);
109 unsigned char buf[B / 4];
110 child.squeeze(buf, B / 4);
111 main.update(buf, B / 4);
115 child.set_suffix(0x0b);
135 std::array<unsigned char, 8192> m;
Definition k12m14_provider.hpp:27
void init()
Definition k12m14_provider.hpp:46
void set_customization(const std::string &customization)
Definition k12m14_provider.hpp:41
void squeeze(unsigned char *hash, size_t hs)
Definition k12m14_provider.hpp:61
void update(const unsigned char *data, size_t len)
Definition k12m14_provider.hpp:55
void transform(const unsigned char *data, uint64_t num_blks, size_t reallen)
Definition k12m14_provider.hpp:95
~k12m14_provider()
Definition k12m14_provider.hpp:36
void clear()
Definition k12m14_provider.hpp:122
k12m14_provider()
Definition k12m14_provider.hpp:31
Definition shake_provider.hpp:56
Main class template implementing the public API for hashing.
Definition hasher.hpp:38
static size_t right_encode(size_t num, unsigned char *buf, bool k12)
Definition shake_provider.hpp:36
kangaroo_type
Definition k12m14_provider.hpp:20
void zero_memory(void *v, size_t n)
Definition functions.hpp:85
void absorb_bytes(const unsigned char *data, size_t len, size_t bs, size_t bschk, unsigned char *m, size_t &pos, T &total, TF transform)
Definition absorb_data.hpp:16
digestpp namespace
Definition ascon.hpp:14