diff options
Diffstat (limited to 'src/mac')
-rw-r--r-- | src/mac/cbc_mac/cbc_mac.cpp | 16 | ||||
-rw-r--r-- | src/mac/cbc_mac/cbc_mac.h | 3 | ||||
-rw-r--r-- | src/mac/cmac/cmac.cpp | 8 | ||||
-rw-r--r-- | src/mac/cmac/cmac.h | 2 | ||||
-rw-r--r-- | src/mac/hmac/hmac.cpp | 12 | ||||
-rw-r--r-- | src/mac/hmac/hmac.h | 3 |
6 files changed, 26 insertions, 18 deletions
diff --git a/src/mac/cbc_mac/cbc_mac.cpp b/src/mac/cbc_mac/cbc_mac.cpp index d5275b0ed..de9a3c17d 100644 --- a/src/mac/cbc_mac/cbc_mac.cpp +++ b/src/mac/cbc_mac/cbc_mac.cpp @@ -4,7 +4,6 @@ *************************************************/ #include <botan/cbc_mac.h> -#include <botan/lookup.h> #include <botan/xor_buf.h> #include <algorithm> @@ -81,20 +80,19 @@ std::string CBC_MAC::name() const *************************************************/ MessageAuthenticationCode* CBC_MAC::clone() const { - return new CBC_MAC(e->name()); + return new CBC_MAC(e->clone()); } /************************************************* * CBC-MAC Constructor * *************************************************/ -CBC_MAC::CBC_MAC(const std::string& cipher) : - MessageAuthenticationCode(block_size_of(cipher), - min_keylength_of(cipher), - max_keylength_of(cipher), - keylength_multiple_of(cipher)), - state(block_size_of(cipher)) +CBC_MAC::CBC_MAC(BlockCipher* e_in) : + MessageAuthenticationCode(e_in->BLOCK_SIZE, + e_in->MINIMUM_KEYLENGTH, + e_in->MAXIMUM_KEYLENGTH, + e_in->KEYLENGTH_MULTIPLE), + e(e_in), state(e->BLOCK_SIZE) { - e = get_block_cipher(cipher); position = 0; } diff --git a/src/mac/cbc_mac/cbc_mac.h b/src/mac/cbc_mac/cbc_mac.h index a5646d07a..9559751c8 100644 --- a/src/mac/cbc_mac/cbc_mac.h +++ b/src/mac/cbc_mac/cbc_mac.h @@ -19,7 +19,8 @@ class BOTAN_DLL CBC_MAC : public MessageAuthenticationCode void clear() throw(); std::string name() const; MessageAuthenticationCode* clone() const; - CBC_MAC(const std::string&); + + CBC_MAC(BlockCipher* e); ~CBC_MAC(); private: void add_data(const byte[], u32bit); diff --git a/src/mac/cmac/cmac.cpp b/src/mac/cmac/cmac.cpp index d3110f9f2..937c15c63 100644 --- a/src/mac/cmac/cmac.cpp +++ b/src/mac/cmac/cmac.cpp @@ -149,4 +149,12 @@ CMAC::CMAC(BlockCipher* e_in) : position = 0; } +/************************************************* +* CMAC Destructor * +*************************************************/ +CMAC::~CMAC() + { + delete e; + } + } diff --git a/src/mac/cmac/cmac.h b/src/mac/cmac/cmac.h index 0fe5b75f8..b8af593e3 100644 --- a/src/mac/cmac/cmac.h +++ b/src/mac/cmac/cmac.h @@ -24,7 +24,7 @@ class BOTAN_DLL CMAC : public MessageAuthenticationCode byte polynomial); CMAC(BlockCipher* e); - ~CMAC() { delete e; } + ~CMAC(); private: void add_data(const byte[], u32bit); void final_result(byte[]); diff --git a/src/mac/hmac/hmac.cpp b/src/mac/hmac/hmac.cpp index b8c76e8f6..6401b0000 100644 --- a/src/mac/hmac/hmac.cpp +++ b/src/mac/hmac/hmac.cpp @@ -5,7 +5,6 @@ *************************************************/ #include <botan/hmac.h> -#include <botan/lookup.h> #include <botan/xor_buf.h> namespace Botan { @@ -77,19 +76,20 @@ std::string HMAC::name() const *************************************************/ MessageAuthenticationCode* HMAC::clone() const { - return new HMAC(hash->name()); + return new HMAC(hash->clone()); } /************************************************* * HMAC Constructor * *************************************************/ -HMAC::HMAC(const std::string& hash_name) : - MessageAuthenticationCode(output_length_of(hash_name), - 1, 2*block_size_of(hash_name)), - hash(get_hash(hash_name)) +HMAC::HMAC(HashFunction* hash_in) : + MessageAuthenticationCode(hash_in->OUTPUT_LENGTH, + 1, 2*hash_in->HASH_BLOCK_SIZE), + hash(hash_in) { if(hash->HASH_BLOCK_SIZE == 0) throw Invalid_Argument("HMAC cannot be used with " + hash->name()); + i_key.create(hash->HASH_BLOCK_SIZE); o_key.create(hash->HASH_BLOCK_SIZE); } diff --git a/src/mac/hmac/hmac.h b/src/mac/hmac/hmac.h index 62529cf13..67ebc4190 100644 --- a/src/mac/hmac/hmac.h +++ b/src/mac/hmac/hmac.h @@ -19,7 +19,8 @@ class BOTAN_DLL HMAC : public MessageAuthenticationCode void clear() throw(); std::string name() const; MessageAuthenticationCode* clone() const; - HMAC(const std::string&); + + HMAC(HashFunction* hash); ~HMAC() { delete hash; } private: void add_data(const byte[], u32bit); |