8#include <botan/shake.h>
10#include <botan/exceptn.h>
15 m_output_bits(output_bits), m_S(25), m_S_pos(0)
17 if(output_bits % 8 != 0)
34 return std::unique_ptr<HashFunction>(
new SHAKE_128(*
this));
43void SHAKE_128::add_data(
const uint8_t input[],
size_t length)
45 m_S_pos =
SHA_3::absorb(SHAKE_128_BITRATE, m_S, m_S_pos, input, length);
48void SHAKE_128::final_result(uint8_t output[])
56 m_output_bits(output_bits), m_S(25), m_S_pos(0)
58 if(output_bits % 8 != 0)
75 return std::unique_ptr<HashFunction>(
new SHAKE_256(*
this));
84void SHAKE_256::add_data(
const uint8_t input[],
size_t length)
86 m_S_pos =
SHA_3::absorb(SHAKE_256_BITRATE, m_S, m_S_pos, input, length);
89void SHAKE_256::final_result(uint8_t output[])
HashFunction * clone() const override
SHAKE_128(size_t output_bits)
std::string name() const override
size_t output_length() const override
std::unique_ptr< HashFunction > copy_state() const override
HashFunction * clone() const override
size_t output_length() const override
SHAKE_256(size_t output_bits)
std::string name() const override
std::unique_ptr< HashFunction > copy_state() const override
static void finish(size_t bitrate, secure_vector< uint64_t > &S, size_t S_pos, uint8_t init_pad, uint8_t fini_pad)
static size_t absorb(size_t bitrate, secure_vector< uint64_t > &S, size_t S_pos, const uint8_t input[], size_t length)
static void expand(size_t bitrate, secure_vector< uint64_t > &S, uint8_t output[], size_t output_length)
std::string to_string(const BER_Object &obj)
void zeroise(std::vector< T, Alloc > &vec)