11#include <botan/hash.h>
12#include <botan/secmem.h>
28 explicit SHA_3(
size_t output_bits);
33 std::unique_ptr<HashFunction>
new_object()
const override;
34 std::unique_ptr<HashFunction>
copy_state()
const override;
35 std::string
name()
const override;
36 void clear()
override;
37 std::string
provider()
const override;
49 static size_t absorb(
size_t bitrate,
51 const uint8_t input[],
size_t length);
63 static void finish(
size_t bitrate,
65 uint8_t init_pad, uint8_t fini_pad);
74 static void expand(
size_t bitrate,
81 static void permute(uint64_t A[25]);
84 void add_data(
const uint8_t input[],
size_t length)
override;
85 void final_result(uint8_t out[])
override;
87#if defined(BOTAN_HAS_SHA3_BMI2)
88 static void permute_bmi2(uint64_t A[25]);
91 size_t m_output_bits, m_bitrate;
static void permute(uint64_t A[25])
size_t hash_block_size() const override
std::unique_ptr< HashFunction > new_object() 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)
std::string provider() const override
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 name() const override
size_t output_length() const override
std::unique_ptr< HashFunction > copy_state() const override
int(* final)(unsigned char *, CTX *)
std::vector< T, secure_allocator< T > > secure_vector