aboutsummaryrefslogtreecommitdiffstats
path: root/src/modes/cbc/cbc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/modes/cbc/cbc.h')
-rw-r--r--src/modes/cbc/cbc.h132
1 files changed, 0 insertions, 132 deletions
diff --git a/src/modes/cbc/cbc.h b/src/modes/cbc/cbc.h
deleted file mode 100644
index 0a10f3661..000000000
--- a/src/modes/cbc/cbc.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
-* CBC mode
-* (C) 1999-2007,2013 Jack Lloyd
-*
-* Distributed under the terms of the Botan license
-*/
-
-#ifndef BOTAN_MODE_CBC_H__
-#define BOTAN_MODE_CBC_H__
-
-#include <botan/cipher_mode.h>
-#include <botan/block_cipher.h>
-#include <botan/mode_pad.h>
-#include <memory>
-
-namespace Botan {
-
-/**
-* CBC Mode
-*/
-class BOTAN_DLL CBC_Mode : public Cipher_Mode
- {
- public:
- secure_vector<byte> start(const byte nonce[], size_t nonce_len) override;
-
- std::string name() const override;
-
- size_t update_granularity() const override;
-
- Key_Length_Specification key_spec() const override;
-
- size_t default_nonce_length() const override;
-
- bool valid_nonce_length(size_t n) const override;
-
- void clear();
- protected:
- CBC_Mode(BlockCipher* cipher, BlockCipherModePaddingMethod* padding);
-
- const BlockCipher& cipher() const { return *m_cipher; }
-
- const BlockCipherModePaddingMethod& padding() const
- {
- BOTAN_ASSERT_NONNULL(m_padding);
- return *m_padding;
- }
-
- secure_vector<byte>& state() { return m_state; }
-
- byte* state_ptr() { return &m_state[0]; }
-
- private:
- void key_schedule(const byte key[], size_t length) override;
-
- std::unique_ptr<BlockCipher> m_cipher;
- std::unique_ptr<BlockCipherModePaddingMethod> m_padding;
- secure_vector<byte> m_state;
- };
-
-/**
-* CBC Encryption
-*/
-class BOTAN_DLL CBC_Encryption : public CBC_Mode
- {
- public:
- CBC_Encryption(BlockCipher* cipher, BlockCipherModePaddingMethod* padding) :
- CBC_Mode(cipher, padding) {}
-
- void update(secure_vector<byte>& blocks, size_t offset = 0) override;
-
- void finish(secure_vector<byte>& final_block, size_t offset = 0) override;
-
- size_t output_length(size_t input_length) const override;
-
- size_t minimum_final_size() const override;
- };
-
-/**
-* CBC Encryption with ciphertext stealing (CBC-CS3 variant)
-*/
-class BOTAN_DLL CTS_Encryption : public CBC_Encryption
- {
- public:
- CTS_Encryption(BlockCipher* cipher) : CBC_Encryption(cipher, nullptr) {}
-
- size_t output_length(size_t input_length) const override;
-
- void finish(secure_vector<byte>& final_block, size_t offset = 0) override;
-
- size_t minimum_final_size() const override;
-
- bool valid_nonce_length(size_t n) const;
- };
-
-/**
-* CBC Decryption
-*/
-class BOTAN_DLL CBC_Decryption : public CBC_Mode
- {
- public:
- CBC_Decryption(BlockCipher* cipher, BlockCipherModePaddingMethod* padding) :
- CBC_Mode(cipher, padding), m_tempbuf(update_granularity()) {}
-
- void update(secure_vector<byte>& blocks, size_t offset = 0) override;
-
- void finish(secure_vector<byte>& final_block, size_t offset = 0) override;
-
- size_t output_length(size_t input_length) const override;
-
- size_t minimum_final_size() const override;
- private:
- secure_vector<byte> m_tempbuf;
- };
-
-/**
-* CBC Decryption with ciphertext stealing (CBC-CS3 variant)
-*/
-class BOTAN_DLL CTS_Decryption : public CBC_Decryption
- {
- public:
- CTS_Decryption(BlockCipher* cipher) : CBC_Decryption(cipher, nullptr) {}
-
- void finish(secure_vector<byte>& final_block, size_t offset = 0) override;
-
- size_t minimum_final_size() const override;
-
- bool valid_nonce_length(size_t n) const;
- };
-
-}
-
-#endif