diff options
Diffstat (limited to 'src/mac/cmac')
-rw-r--r-- | src/mac/cmac/cmac.cpp | 22 | ||||
-rw-r--r-- | src/mac/cmac/cmac.h | 2 |
2 files changed, 12 insertions, 12 deletions
diff --git a/src/mac/cmac/cmac.cpp b/src/mac/cmac/cmac.cpp index 5a99f93b1..d3110f9f2 100644 --- a/src/mac/cmac/cmac.cpp +++ b/src/mac/cmac/cmac.cpp @@ -4,7 +4,6 @@ *************************************************/ #include <botan/cmac.h> -#include <botan/lookup.h> #include <botan/xor_buf.h> namespace Botan { @@ -123,22 +122,23 @@ std::string CMAC::name() const *************************************************/ MessageAuthenticationCode* CMAC::clone() const { - return new CMAC(e->name()); + return new CMAC(e->clone()); } /************************************************* * CMAC Constructor * *************************************************/ -CMAC::CMAC(const std::string& bc_name) : - MessageAuthenticationCode(block_size_of(bc_name), - min_keylength_of(bc_name), - max_keylength_of(bc_name), - keylength_multiple_of(bc_name)) +CMAC::CMAC(BlockCipher* e_in) : + MessageAuthenticationCode(e_in->BLOCK_SIZE, + e_in->MINIMUM_KEYLENGTH, + e_in->MAXIMUM_KEYLENGTH, + e_in->KEYLENGTH_MULTIPLE), + e(e_in) { - e = get_block_cipher(bc_name); - - if(e->BLOCK_SIZE == 16) polynomial = 0x87; - else if(e->BLOCK_SIZE == 8) polynomial = 0x1B; + if(e->BLOCK_SIZE == 16) + polynomial = 0x87; + else if(e->BLOCK_SIZE == 8) + polynomial = 0x1B; else throw Invalid_Argument("CMAC cannot use the cipher " + e->name()); diff --git a/src/mac/cmac/cmac.h b/src/mac/cmac/cmac.h index c7f107258..0fe5b75f8 100644 --- a/src/mac/cmac/cmac.h +++ b/src/mac/cmac/cmac.h @@ -23,7 +23,7 @@ class BOTAN_DLL CMAC : public MessageAuthenticationCode static SecureVector<byte> poly_double(const MemoryRegion<byte>& in, byte polynomial); - CMAC(const std::string&); + CMAC(BlockCipher* e); ~CMAC() { delete e; } private: void add_data(const byte[], u32bit); |