16#ifndef CRYPTOPP_CMAC_WIDE_BLOCK_CIPHERS
17# define CRYPTOPP_CMAC_WIDE_BLOCK_CIPHERS 1
28 virtual ~CMAC_Base() {}
29 CMAC_Base() : m_counter(0) {}
32 void Update(
const byte *input,
size_t length);
34 unsigned int DigestSize()
const {
return GetCipher().BlockSize();}
47 unsigned int m_counter;
65 {this->
SetKey(key, length);}
67 static std::string StaticAlgorithmName() {
return std::string(
"CMAC(") + T::StaticAlgorithmName() +
")";}
70 BlockCipher & AccessCipher() {
return m_cipher;}
71 typename T::Encryption m_cipher;
Interface for one direction (encryption or decryption) of a block cipher.
CMAC base implementation.
std::string AlgorithmProvider() const
Retrieve the provider of this algorithm.
unsigned int OptimalDataAlignment() const
Provides input and output data alignment for optimal performance.
void Update(const byte *input, size_t length)
Updates a hash with additional input.
void TruncatedFinal(byte *mac, size_t size)
Computes the hash of the current message.
unsigned int OptimalBlockSize() const
Provides the input block size most efficient for this hash.
void UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms)
Sets the key for this object without performing parameter validation.
unsigned int DigestSize() const
Provides the digest size of the hash.
CMAC(const byte *key, size_t length=SameKeyLengthAs< T >::DEFAULT_KEYLENGTH)
Construct a CMAC.
EAX block cipher base implementation.
Interface for message authentication codes.
Provides a base implementation of Algorithm and SimpleKeyingInterface for message authentication code...
Interface for retrieving values given their names.
Provides key lengths based on another class's key length.
static const int DEFAULT_KEYLENGTH
The default key length used by the algorithm provided as a constant.
virtual void SetKey(const byte *key, size_t length, const NameValuePairs ¶ms=g_nullNameValuePairs)
Sets or reset the key of this object.
Crypto++ library namespace.
Classes and functions for secure memory allocations.
Classes and functions for implementing secret key algorithms.