8#ifndef BOTAN_SHA_64BIT_H_
9#define BOTAN_SHA_64BIT_H_
11#include <botan/internal/mdx_hash.h>
32 std::string
name()
const override {
return "SHA-384"; }
38 std::unique_ptr<HashFunction>
new_object()
const override;
40 std::unique_ptr<HashFunction>
copy_state()
const override;
42 std::string
provider()
const override;
44 void clear()
override { m_md.clear(); }
47 void add_data(std::span<const uint8_t> input)
override;
49 void final_result(std::span<uint8_t> output)
override;
72 std::string
name()
const override {
return "SHA-512"; }
78 std::unique_ptr<HashFunction>
new_object()
const override;
80 std::unique_ptr<HashFunction>
copy_state()
const override;
82 std::string
provider()
const override;
84 void clear()
override { m_md.clear(); }
89#if defined(BOTAN_HAS_SHA2_64_X86_AVX2)
90 static void compress_digest_x86_avx2(
digest_type& digest, std::span<const uint8_t> input,
size_t blocks);
93#if defined(BOTAN_HAS_SHA2_64_X86_AVX512)
94 static void compress_digest_x86_avx512(
digest_type& digest, std::span<const uint8_t> input,
size_t blocks);
97#if defined(BOTAN_HAS_SHA2_64_X86)
98 static void compress_digest_x86(
digest_type& digest, std::span<const uint8_t> input,
size_t blocks);
101#if defined(BOTAN_HAS_SHA2_64_ARMV8)
102 static void compress_digest_armv8(
digest_type& digest, std::span<const uint8_t> input,
size_t blocks);
106 void add_data(std::span<const uint8_t> input)
override;
108 void final_result(std::span<uint8_t> output)
override;
131 std::string
name()
const override {
return "SHA-512-256"; }
137 std::unique_ptr<HashFunction>
new_object()
const override;
139 std::unique_ptr<HashFunction>
copy_state()
const override;
141 std::string
provider()
const override;
143 void clear()
override { m_md.clear(); }
146 void add_data(std::span<const uint8_t> input)
override;
148 void final_result(std::span<uint8_t> output)
override;
void final(uint8_t out[])
std::string name() const override
size_t hash_block_size() const override
static constexpr size_t ctr_bytes
std::unique_ptr< HashFunction > new_object() const override
std::unique_ptr< HashFunction > copy_state() const override
secure_vector< uint64_t > digest_type
static constexpr size_t output_bytes
std::string provider() const override
static constexpr MD_Endian bit_endianness
static constexpr size_t block_bytes
static constexpr MD_Endian byte_endianness
size_t output_length() const override
static void init(digest_type &digest)
static void compress_n(digest_type &digest, std::span< const uint8_t > input, size_t blocks)
size_t hash_block_size() const override
secure_vector< uint64_t > digest_type
size_t output_length() const override
std::string provider() const override
static constexpr MD_Endian bit_endianness
static constexpr size_t output_bytes
std::unique_ptr< HashFunction > copy_state() const override
std::unique_ptr< HashFunction > new_object() const override
static void init(digest_type &digest)
static constexpr MD_Endian byte_endianness
static constexpr size_t ctr_bytes
std::string name() const override
static void compress_n(digest_type &digest, std::span< const uint8_t > input, size_t blocks)
static constexpr size_t block_bytes
static void compress_n(digest_type &digest, std::span< const uint8_t > input, size_t blocks)
std::unique_ptr< HashFunction > new_object() const override
size_t output_length() const override
size_t hash_block_size() const override
static constexpr size_t block_bytes
static constexpr size_t output_bytes
static constexpr MD_Endian byte_endianness
std::string provider() const override
static void init(digest_type &digest)
static constexpr size_t ctr_bytes
secure_vector< uint64_t > digest_type
std::string name() const override
std::unique_ptr< HashFunction > copy_state() const override
static void compress_digest(digest_type &digest, std::span< const uint8_t > input, size_t blocks)
static constexpr MD_Endian bit_endianness
std::vector< T, secure_allocator< T > > secure_vector