11#include <botan/block_cipher.h>
12#include <botan/stream_cipher.h>
13#include <botan/hash.h>
30 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
31 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
33 size_t block_size()
const override {
return m_block_size; }
40 void clear()
override;
41 std::string
name()
const override;
53 void key_schedule(
const uint8_t[],
size_t)
override;
55 size_t left_size()
const {
return m_hash->output_length(); }
56 size_t right_size()
const {
return m_block_size - left_size(); }
58 const size_t m_block_size;
59 std::unique_ptr<HashFunction> m_hash;
60 std::unique_ptr<StreamCipher> m_cipher;
61 secure_vector<uint8_t> m_key1, m_key2;
virtual BlockCipher * clone() const =0
virtual void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const =0
virtual void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const =0
size_t block_size() const override
Key_Length_Specification key_spec() const override
virtual std::string name() const =0
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
#define BOTAN_FUTURE_INTERNAL_HEADER(hdr)