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;
39 void key_schedule(std::span<const uint8_t> key)
final;
43 void cipher_bytes(
const uint8_t in[], uint8_t out[],
size_t length)
final;
44 void generate_keystream(uint8_t out[],
size_t length)
override;
46 void generate_keystream_internal(std::span<uint8_t> out);
51 void set_iv_bytes(
const uint8_t iv[],
size_t iv_len)
final;
55 bool m_has_keying_material;
57 size_t m_bytes_generated;
64 std::string
name()
const override {
return "SHAKE-128"; }
66 std::unique_ptr<StreamCipher>
new_object()
const override {
return std::make_unique<SHAKE_128_Cipher>(); }
73 std::string
name()
const override {
return "SHAKE-256"; }
75 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
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
int(* final)(unsigned char *, CTX *)
std::vector< T, secure_allocator< T > > secure_vector