8#include <botan/keccak.h>
10#include <botan/exceptn.h>
11#include <botan/loadstor.h>
17 return std::unique_ptr<HashFunction>(
new Keccak_1600(*
this));
21 m_output_bits(output_bits),
22 m_bitrate(1600 - 2*output_bits),
28 if(output_bits != 224 && output_bits != 256 &&
29 output_bits != 384 && output_bits != 512)
31 std::to_string(output_bits));
36 return "Keccak-1600(" + std::to_string(m_output_bits) +
")";
50void Keccak_1600::add_data(
const uint8_t input[],
size_t length)
52 m_S_pos =
SHA_3::absorb(m_bitrate, m_S, m_S_pos, input, length);
55void Keccak_1600::final_result(uint8_t output[])
HashFunction * clone() const override
Keccak_1600(size_t output_bits=512)
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)
void zeroise(std::vector< T, Alloc > &vec)
void copy_out_vec_le(uint8_t out[], size_t out_bytes, const std::vector< T, Alloc > &in)