diff options
author | lloyd <[email protected]> | 2010-10-13 13:09:56 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2010-10-13 13:09:56 +0000 |
commit | 55550067fd69850c767cc9800433e1eabfeb5da2 (patch) | |
tree | 80ccea320ba00be2f7942d88657937462a6b1f03 /src/block/cast | |
parent | 85a504e310666f270a3a67edf4cdac06c34c61b9 (diff) |
Add a new subclass for BlockCipher BlockCipher_Fixed_Block_Size, which
sets the block size statically and also creates an enum with the
size. Use the enum instead of calling block_size() where possible,
since that uses two virtual function calls per block which is quite
unfortunate. The real advantages here as compared to the previous
version which kept the block size as a per-object u32bit:
- The compiler can inline the constant as an immediate operand
(previously it would load the value via an indirection on this)
- Removes 32 bits per object overhead (except in cases with actually
variable block sizes, which are very few and rarely used)
Diffstat (limited to 'src/block/cast')
-rw-r--r-- | src/block/cast/cast128.cpp | 8 | ||||
-rw-r--r-- | src/block/cast/cast128.h | 4 | ||||
-rw-r--r-- | src/block/cast/cast256.cpp | 8 | ||||
-rw-r--r-- | src/block/cast/cast256.h | 4 |
4 files changed, 12 insertions, 12 deletions
diff --git a/src/block/cast/cast128.cpp b/src/block/cast/cast128.cpp index 092fc201e..24469e025 100644 --- a/src/block/cast/cast128.cpp +++ b/src/block/cast/cast128.cpp @@ -74,8 +74,8 @@ void CAST_128::encrypt_n(const byte in[], byte out[], size_t blocks) const store_be(out, R, L); - in += block_size(); - out += block_size(); + in += BLOCK_SIZE; + out += BLOCK_SIZE; } } @@ -108,8 +108,8 @@ void CAST_128::decrypt_n(const byte in[], byte out[], size_t blocks) const store_be(out, R, L); - in += block_size(); - out += block_size(); + in += BLOCK_SIZE; + out += BLOCK_SIZE; } } diff --git a/src/block/cast/cast128.h b/src/block/cast/cast128.h index edccf04b3..3ecbcaa5a 100644 --- a/src/block/cast/cast128.h +++ b/src/block/cast/cast128.h @@ -15,7 +15,7 @@ namespace Botan { /** * CAST-128 */ -class BOTAN_DLL CAST_128 : public BlockCipher +class BOTAN_DLL CAST_128 : public BlockCipher_Fixed_Block_Size<8> { public: void encrypt_n(const byte in[], byte out[], size_t blocks) const; @@ -25,7 +25,7 @@ class BOTAN_DLL CAST_128 : public BlockCipher std::string name() const { return "CAST-128"; } BlockCipher* clone() const { return new CAST_128; } - CAST_128() : BlockCipher(8, 11, 16), MK(16), RK(16) {} + CAST_128() : BlockCipher_Fixed_Block_Size(11, 16), MK(16), RK(16) {} private: void key_schedule(const byte[], size_t); diff --git a/src/block/cast/cast256.cpp b/src/block/cast/cast256.cpp index 1b41cd2af..8be0a8dd6 100644 --- a/src/block/cast/cast256.cpp +++ b/src/block/cast/cast256.cpp @@ -84,8 +84,8 @@ void CAST_256::encrypt_n(const byte in[], byte out[], size_t blocks) const store_be(out, A, B, C, D); - in += block_size(); - out += block_size(); + in += BLOCK_SIZE; + out += BLOCK_SIZE; } } @@ -128,8 +128,8 @@ void CAST_256::decrypt_n(const byte in[], byte out[], size_t blocks) const store_be(out, A, B, C, D); - in += block_size(); - out += block_size(); + in += BLOCK_SIZE; + out += BLOCK_SIZE; } } diff --git a/src/block/cast/cast256.h b/src/block/cast/cast256.h index 74e38face..0dda7f0d7 100644 --- a/src/block/cast/cast256.h +++ b/src/block/cast/cast256.h @@ -15,7 +15,7 @@ namespace Botan { /** * CAST-256 */ -class BOTAN_DLL CAST_256 : public BlockCipher +class BOTAN_DLL CAST_256 : public BlockCipher_Fixed_Block_Size<16> { public: void encrypt_n(const byte in[], byte out[], size_t blocks) const; @@ -25,7 +25,7 @@ class BOTAN_DLL CAST_256 : public BlockCipher std::string name() const { return "CAST-256"; } BlockCipher* clone() const { return new CAST_256; } - CAST_256() : BlockCipher(16, 4, 32, 4), MK(48), RK(48) {} + CAST_256() : BlockCipher_Fixed_Block_Size(4, 32, 4), MK(48), RK(48) {} private: void key_schedule(const byte[], size_t); |