diff options
author | lloyd <[email protected]> | 2010-10-28 21:15:21 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2010-10-28 21:15:21 +0000 |
commit | 22f02b418f7f53431da168abe9fb74f15bf3cb0e (patch) | |
tree | cdc81938c979403d20a438d134bbd6d64479f17d /src/block/cascade | |
parent | a7a047e6823dcbf23e172dd5c0f9a7b4fd748f10 (diff) |
Eliminate the constant size_t values in SymmetricAlgorithm that give
the parameters of the key length. Instead define a new function which
returns a simple object which contains this information.
This definitely breaks backwards compatability, though only with code
that directly manipulates low level objects like BlockCipher*s
directly, which is probably relatively rare.
Also remove some deprecated accessor functions from lookup.h. It turns
out block_size_of and output_size_of are being used in the TLS code; I
need to remove them from there before I can delete these entirely.
Really that didn't make much sense, because they assumed all
implementations of a particular algorithm will have the same
specifications, which is definitely not necessarily true, especially
WRT key length. It is much safer (and probably simpler) to first
retrieve an instance of the actual object you are going to use and
then ask it directly.
Diffstat (limited to 'src/block/cascade')
-rw-r--r-- | src/block/cascade/cascade.cpp | 7 | ||||
-rw-r--r-- | src/block/cascade/cascade.h | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/block/cascade/cascade.cpp b/src/block/cascade/cascade.cpp index 2701c20e7..f1b1a8f2c 100644 --- a/src/block/cascade/cascade.cpp +++ b/src/block/cascade/cascade.cpp @@ -31,10 +31,10 @@ void Cascade_Cipher::decrypt_n(const byte in[], byte out[], void Cascade_Cipher::key_schedule(const byte key[], size_t) { - const byte* key2 = key + cipher1->MAXIMUM_KEYLENGTH; + const byte* key2 = key + cipher1->maximum_keylength(); - cipher1->set_key(key , cipher1->MAXIMUM_KEYLENGTH); - cipher2->set_key(key2, cipher2->MAXIMUM_KEYLENGTH); + cipher1->set_key(key , cipher1->maximum_keylength()); + cipher2->set_key(key2, cipher2->maximum_keylength()); } void Cascade_Cipher::clear() @@ -81,7 +81,6 @@ size_t block_size_for_cascade(size_t bs, size_t bs2) } Cascade_Cipher::Cascade_Cipher(BlockCipher* c1, BlockCipher* c2) : - BlockCipher(c1->MAXIMUM_KEYLENGTH + c2->MAXIMUM_KEYLENGTH), cipher1(c1), cipher2(c2) { block = block_size_for_cascade(c1->block_size(), c2->block_size()); diff --git a/src/block/cascade/cascade.h b/src/block/cascade/cascade.h index 31ee3b336..b1376e2e0 100644 --- a/src/block/cascade/cascade.h +++ b/src/block/cascade/cascade.h @@ -23,6 +23,12 @@ class BOTAN_DLL Cascade_Cipher : public BlockCipher size_t block_size() const { return block; } + Key_Length_Specification key_spec() const + { + return Key_Length_Specification(cipher1->maximum_keylength() + + cipher2->maximum_keylength()); + } + void clear(); std::string name() const; BlockCipher* clone() const; |