diff options
Diffstat (limited to 'src/block/cascade')
-rw-r--r-- | src/block/cascade/cascade.cpp | 5 | ||||
-rw-r--r-- | src/block/cascade/cascade.h | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/block/cascade/cascade.cpp b/src/block/cascade/cascade.cpp index 225b7fd6e..2701c20e7 100644 --- a/src/block/cascade/cascade.cpp +++ b/src/block/cascade/cascade.cpp @@ -81,10 +81,11 @@ size_t block_size_for_cascade(size_t bs, size_t bs2) } Cascade_Cipher::Cascade_Cipher(BlockCipher* c1, BlockCipher* c2) : - BlockCipher(block_size_for_cascade(c1->block_size(), c2->block_size()), - c1->MAXIMUM_KEYLENGTH + c2->MAXIMUM_KEYLENGTH), + BlockCipher(c1->MAXIMUM_KEYLENGTH + c2->MAXIMUM_KEYLENGTH), cipher1(c1), cipher2(c2) { + block = block_size_for_cascade(c1->block_size(), c2->block_size()); + if(block_size() % c1->block_size() || block_size() % c2->block_size()) throw Internal_Error("Failure in " + name() + " constructor"); } diff --git a/src/block/cascade/cascade.h b/src/block/cascade/cascade.h index 5e1989cb6..31ee3b336 100644 --- a/src/block/cascade/cascade.h +++ b/src/block/cascade/cascade.h @@ -21,6 +21,8 @@ class BOTAN_DLL Cascade_Cipher : public BlockCipher void encrypt_n(const byte in[], byte out[], size_t blocks) const; void decrypt_n(const byte in[], byte out[], size_t blocks) const; + size_t block_size() const { return block; } + void clear(); std::string name() const; BlockCipher* clone() const; @@ -36,6 +38,7 @@ class BOTAN_DLL Cascade_Cipher : public BlockCipher private: void key_schedule(const byte[], size_t); + size_t block; BlockCipher* cipher1; BlockCipher* cipher2; }; |