9#ifndef BOTAN_SHAKE_CIPHER_H_
10#define BOTAN_SHAKE_CIPHER_H_
12#include <botan/stream_cipher.h>
13#include <botan/internal/keccak_perm.h>
28 void seek(uint64_t offset)
final;
40 size_t buffer_size() const final {
return m_keccak.byte_rate(); }
43 void key_schedule(std::span<const uint8_t> key)
final;
47 void cipher_bytes(
const uint8_t in[], uint8_t out[],
size_t length)
final;
48 void generate_keystream(uint8_t out[],
size_t length)
override;
50 void generate_keystream_internal(std::span<uint8_t> out);
55 void set_iv_bytes(
const uint8_t iv[],
size_t iv_len)
final;
59 bool m_has_keying_material;
61 size_t m_bytes_generated;
68 std::string
name()
const override {
return "SHAKE-128"; }
70 std::unique_ptr<StreamCipher>
new_object()
const override {
return std::make_unique<SHAKE_128_Cipher>(); }
77 std::string
name()
const override {
return "SHAKE-256"; }
79 std::unique_ptr<StreamCipher>
new_object()
const override {
return std::make_unique<SHAKE_256_Cipher>(); }
std::unique_ptr< StreamCipher > new_object() const override
std::string name() const override
std::unique_ptr< StreamCipher > new_object() const override
std::string name() const override
bool has_keying_material() const final
std::optional< uint64_t > remaining_keystream_bytes() const override
Key_Length_Specification key_spec() const final
size_t buffer_size() const final
SHAKE_Cipher(size_t keccak_capacity)
void seek(uint64_t offset) final
bool supports_seek() const final
std::vector< T, secure_allocator< T > > secure_vector