diff options
author | lloyd <[email protected]> | 2007-09-16 16:00:37 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2007-09-16 16:00:37 +0000 |
commit | 22c9e2330cdf0030222aa2aafb5b8de4aebb707a (patch) | |
tree | 08c399090af662feaf057b472effe4ab0566ba4c /include/cbc_mac.h | |
parent | c2a2e61e14dd27ad9a1143b06e404502b364415f (diff) |
Check in an initial implementation of CBC-MAC.
The test vectors were generated by Crypto++ 5.5 on a Linux/x86-64 machine.
Test vectors for CBC-MAC(DES) all pass, for inputs up to 63 bytes. For
CBC-MAC(AES-128), all test vectors with inputs over 10 bytes fail to verify
against what Crypto++ produces. Unknown at this time where the bug lies.
Diffstat (limited to 'include/cbc_mac.h')
-rw-r--r-- | include/cbc_mac.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/cbc_mac.h b/include/cbc_mac.h new file mode 100644 index 000000000..aec1c42f1 --- /dev/null +++ b/include/cbc_mac.h @@ -0,0 +1,36 @@ +/************************************************* +* CBC-MAC Header File * +* (C) 1999-2007 The Botan Project * +*************************************************/ + +#ifndef BOTAN_CBC_MAC__ +#define BOTAN_CBC_MAC__ + +#include <botan/base.h> + +namespace Botan { + +/************************************************* +* CBC-MAC * +*************************************************/ +class CBC_MAC : public MessageAuthenticationCode + { + public: + void clear() throw(); + std::string name() const; + MessageAuthenticationCode* clone() const; + CBC_MAC(const std::string&); + ~CBC_MAC(); + private: + void add_data(const byte[], u32bit); + void final_result(byte[]); + void key(const byte[], u32bit); + + BlockCipher* e; + SecureVector<byte> state; + u32bit position; + }; + +} + +#endif |