aboutsummaryrefslogtreecommitdiffstats
path: root/src/block/cascade
diff options
context:
space:
mode:
Diffstat (limited to 'src/block/cascade')
-rw-r--r--src/block/cascade/cascade.cpp5
-rw-r--r--src/block/cascade/cascade.h3
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;
};