11#include <botan/block_cipher.h>
12#include <botan/stream_cipher.h>
13#include <botan/hash.h>
28 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
29 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
31 size_t block_size()
const override {
return m_block_size; }
38 void clear()
override;
39 std::string
name()
const override;
40 std::unique_ptr<BlockCipher>
new_object()
const override;
48 Lion(std::unique_ptr<HashFunction> hash,
49 std::unique_ptr<StreamCipher> cipher,
52 void key_schedule(
const uint8_t[],
size_t)
override;
54 size_t left_size()
const {
return m_hash->output_length(); }
55 size_t right_size()
const {
return m_block_size - left_size(); }
57 const size_t m_block_size;
58 std::unique_ptr<HashFunction> m_hash;
59 std::unique_ptr<StreamCipher> m_cipher;
60 secure_vector<uint8_t> m_key1, m_key2;
std::unique_ptr< BlockCipher > new_object() const override
bool has_keying_material() const override
size_t block_size() const override
std::string name() const override
void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
Key_Length_Specification key_spec() const override
void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
int(* final)(unsigned char *, CTX *)