8 #include <botan/shake.h>
9 #include <botan/sha3.h>
10 #include <botan/parsing.h>
11 #include <botan/exceptn.h>
16 m_output_bits(output_bits), m_S(25), m_S_pos(0)
18 if(output_bits % 8 != 0)
39 void SHAKE_128::add_data(
const uint8_t input[],
size_t length)
41 m_S_pos =
SHA_3::absorb(SHAKE_128_BITRATE, m_S, m_S_pos, input, length);
44 void SHAKE_128::final_result(uint8_t output[])
46 std::vector<uint8_t> padding(SHAKE_128_BITRATE / 8 - m_S_pos);
49 padding[padding.size()-1] |= 0x80;
51 add_data(padding.data(), padding.size());
59 m_output_bits(output_bits), m_S(25), m_S_pos(0)
61 if(output_bits % 8 != 0)
82 void SHAKE_256::add_data(
const uint8_t input[],
size_t length)
84 m_S_pos =
SHA_3::absorb(SHAKE_256_BITRATE, m_S, m_S_pos, input, length);
87 void SHAKE_256::final_result(uint8_t output[])
89 std::vector<uint8_t> padding(SHAKE_256_BITRATE / 8 - m_S_pos);
92 padding[padding.size()-1] |= 0x80;
94 add_data(padding.data(), padding.size());
std::string name() const override
SHAKE_256(size_t output_bits)
static void expand(size_t bitrate, secure_vector< uint64_t > &S, uint8_t output[], size_t output_length)
HashFunction * clone() const override
SHAKE_128(size_t output_bits)
std::string to_string(const BER_Object &obj)
static size_t absorb(size_t bitrate, secure_vector< uint64_t > &S, size_t S_pos, const uint8_t input[], size_t length)
size_t output_length() const override
std::string name() const override
size_t output_length() const override
HashFunction * clone() const override
void zeroise(std::vector< T, Alloc > &vec)