8#ifndef BOTAN_STREEBOG_H_
9#define BOTAN_STREEBOG_H_
11#include <botan/hash.h>
13#include <botan/internal/alignment_buffer.h>
25 std::unique_ptr<HashFunction>
new_object()
const override {
return std::make_unique<Streebog>(m_output_bits); }
27 void clear()
override;
28 std::string
name()
const override;
29 std::string
provider()
const override;
33 std::unique_ptr<HashFunction>
copy_state()
const override;
35 explicit Streebog(
size_t output_bits);
38 void add_data(std::span<const uint8_t> input)
override;
41 void compress(
const uint8_t input[],
bool lastblock =
false);
43 void compress_64(
const uint64_t input[],
bool lastblock =
false);
46#if defined(BOTAN_HAS_STREEBOG_AVX512_GFNI)
47 static void compress_64_avx512_gfni(uint64_t h[8],
const uint64_t M[8], uint64_t N);
50 const size_t m_output_bits;
void final(uint8_t out[])
void compress(const uint8_t input[], bool lastblock=false)
void add_data(std::span< const uint8_t > input) override
std::string provider() const override
size_t output_length() const override
std::unique_ptr< HashFunction > new_object() const override
void compress_64(const uint64_t input[], bool lastblock=false)
std::unique_ptr< HashFunction > copy_state() const override
void final_result(std::span< uint8_t > out) override
Streebog(size_t output_bits)
std::string name() const override
size_t hash_block_size() const override
std::vector< T, secure_allocator< T > > secure_vector