Botan 3.4.0
Crypto and TLS for C&
cascade.h
Go to the documentation of this file.
1/*
2* Block Cipher Cascade
3* (C) 2010 Jack Lloyd
4*
5* Botan is released under the Simplified BSD License (see license.txt)
6*/
7
8#ifndef BOTAN_CASCADE_H_
9#define BOTAN_CASCADE_H_
10
11#include <botan/block_cipher.h>
12
13namespace Botan {
14
15/**
16* Block Cipher Cascade
17*/
19 public:
20 void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override;
21 void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override;
22
23 size_t block_size() const override { return m_block_size; }
24
26 return Key_Length_Specification(m_cipher1->maximum_keylength() + m_cipher2->maximum_keylength());
27 }
28
29 void clear() override;
30 std::string name() const override;
31 std::unique_ptr<BlockCipher> new_object() const override;
32
33 bool has_keying_material() const override;
34
35 /**
36 * Create a cascade of two block ciphers
37 * @param cipher1 the first cipher
38 * @param cipher2 the second cipher
39 */
40 Cascade_Cipher(std::unique_ptr<BlockCipher> cipher1, std::unique_ptr<BlockCipher> cipher2);
41
44
45 private:
46 void key_schedule(std::span<const uint8_t>) override;
47
48 std::unique_ptr<BlockCipher> m_cipher1, m_cipher2;
49 size_t m_block_size;
50};
51
52} // namespace Botan
53
54#endif
bool has_keying_material() const override
Definition cascade.cpp:47
Cascade_Cipher & operator=(const Cascade_Cipher &)=delete
std::string name() const override
Definition cascade.cpp:43
Key_Length_Specification key_spec() const override
Definition cascade.h:25
Cascade_Cipher(std::unique_ptr< BlockCipher > cipher1, std::unique_ptr< BlockCipher > cipher2)
Definition cascade.cpp:79
std::unique_ptr< BlockCipher > new_object() const override
Definition cascade.cpp:51
void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
Definition cascade.cpp:15
Cascade_Cipher(const Cascade_Cipher &)=delete
void clear() override
Definition cascade.cpp:38
void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
Definition cascade.cpp:23
size_t block_size() const override
Definition cascade.h:23
int(* final)(unsigned char *, CTX *)