Botan 3.11.1
Crypto and TLS for C&
whirlpool.h
Go to the documentation of this file.
1/*
2* Whirlpool
3* (C) 1999-2007 Jack Lloyd
4*
5* Botan is released under the Simplified BSD License (see license.txt)
6*/
7
8#ifndef BOTAN_WHIRLPOOL_H_
9#define BOTAN_WHIRLPOOL_H_
10
11#include <botan/internal/mdx_hash.h>
12
13namespace Botan {
14
15/**
16* Whirlpool
17*/
19 public:
21
24 static constexpr size_t block_bytes = 64;
25 static constexpr size_t output_bytes = 64;
26 static constexpr size_t ctr_bytes = 32;
27
28 static void compress_n(digest_type& digest, std::span<const uint8_t> input, size_t blocks);
29 static void init(digest_type& digest);
30
31#if defined(BOTAN_HAS_WHIRLPOOL_AVX512)
32 static void compress_n_avx512(digest_type& digest, std::span<const uint8_t> input, size_t blocks);
33#endif
34
35#if defined(BOTAN_HAS_WHIRLPOOL_AVX2)
36 static void compress_n_avx2(digest_type& digest, std::span<const uint8_t> input, size_t blocks);
37#endif
38
39 public:
40 std::string name() const override { return "Whirlpool"; }
41
42 size_t output_length() const override { return output_bytes; }
43
44 size_t hash_block_size() const override { return block_bytes; }
45
46 std::unique_ptr<HashFunction> new_object() const override;
47
48 std::unique_ptr<HashFunction> copy_state() const override;
49
50 std::string provider() const override;
51
52 void clear() override { m_md.clear(); }
53
54 private:
55 void add_data(std::span<const uint8_t> input) override;
56
57 void final_result(std::span<uint8_t> output) override;
58
59 private:
61};
62
63} // namespace Botan
64
65#endif
void final(uint8_t out[])
Definition buf_comp.h:69
static constexpr MD_Endian bit_endianness
Definition whirlpool.h:23
std::string provider() const override
Definition whirlpool.cpp:85
std::unique_ptr< HashFunction > new_object() const override
static void compress_n(digest_type &digest, std::span< const uint8_t > input, size_t blocks)
void clear() override
Definition whirlpool.h:52
static void init(digest_type &digest)
secure_vector< uint64_t > digest_type
Definition whirlpool.h:20
std::unique_ptr< HashFunction > copy_state() const override
static constexpr size_t ctr_bytes
Definition whirlpool.h:26
static constexpr MD_Endian byte_endianness
Definition whirlpool.h:22
static constexpr size_t output_bytes
Definition whirlpool.h:25
size_t output_length() const override
Definition whirlpool.h:42
std::string name() const override
Definition whirlpool.h:40
static constexpr size_t block_bytes
Definition whirlpool.h:24
size_t hash_block_size() const override
Definition whirlpool.h:44
std::vector< T, secure_allocator< T > > secure_vector
Definition secmem.h:68
MD_Endian
Definition mdx_hash.h:20