1 #ifndef CRYPTOPP_VMAC_H 2 #define CRYPTOPP_VMAC_H 9 # define CRYPTOPP_DISABLE_VMAC_ASM 20 unsigned int IVSize()
const {
return GetCipher().BlockSize();}
22 void Resynchronize(
const byte *nonce,
int length=-1);
24 unsigned int DigestSize()
const {
return m_is128 ? 16 : 8;};
25 void UncheckedSetKey(
const byte *userKey,
unsigned int keylength,
const NameValuePairs ¶ms);
26 void TruncatedFinal(byte *mac,
size_t size);
27 unsigned int BlockSize()
const {
return m_L1KeyLength;}
28 ByteOrder GetByteOrder()
const {
return LITTLE_ENDIAN_ORDER;}
29 unsigned int OptimalDataAlignment()
const;
33 virtual int DefaultDigestSize()
const =0;
35 void HashEndianCorrectedBlock(
const word64 *data);
36 size_t HashMultipleBlocks(
const word64 *input,
size_t length);
38 word64* StateBuf() {
return NULL;}
39 word64* DataBuf() {
return (word64 *)m_data();}
41 void VHASH_Update_SSE2(
const word64 *data,
size_t blocksRemainingInWord64,
int tagPart);
42 #if !(defined(_MSC_VER) && _MSC_VER < 1300) // can't use function template here with VC6 43 template <
bool T_128BitTag>
45 void VHASH_Update_Template(
const word64 *data,
size_t blockRemainingInWord128);
46 void VHASH_Update(
const word64 *data,
size_t blocksRemainingInWord128);
48 #if CRYPTOPP_DOXYGEN_PROCESSING 52 CRYPTOPP_BLOCK_1(polyState, word64, 4*(m_is128+1))
53 CRYPTOPP_BLOCK_2(nhKey, word64, m_L1KeyLength/
sizeof(word64) + 2*m_is128)
54 CRYPTOPP_BLOCK_3(data, byte, m_L1KeyLength)
55 CRYPTOPP_BLOCK_4(l3Key, word64, 2*(m_is128+1))
56 CRYPTOPP_BLOCK_5(nonce, byte, IVSize())
57 CRYPTOPP_BLOCK_6(pad, byte, IVSize())
58 CRYPTOPP_BLOCKS_END(6)
60 bool m_is128, m_padCached, m_isFirstBlock;
72 template <
class T_BlockCipher,
int T_DigestBitSize = 128>
76 static std::string StaticAlgorithmName() {
return std::string(
"VMAC(") + T_BlockCipher::StaticAlgorithmName() +
")-" +
IntToString(T_DigestBitSize);}
80 int DefaultDigestSize()
const {
return T_DigestBitSize/8;}
81 typename T_BlockCipher::Encryption m_cipher;
std::string AlgorithmName() const
Provides the name of this algorithm.
The VMAC message authentication code.
const char * DigestSize()
int, in bytes
Interface for message authentication codes.
ByteOrder
Provides the byte ordering.
unsigned int DigestSize() const
Provides the digest size of the hash.
Class specific methods used to operate the MAC.
Provides class member functions to access SimpleKeyingInterface constants.
Abstract base classes that provide a uniform interface to this library.
unsigned int BlockSize() const
Provides the block size of the compression function.
Interface for random number generators.
Interface for one direction (encryption or decryption) of a block cipher.
Classes and functions for implementing secret key algorithms.
const char * IV()
ConstByteArrayParameter, also accepts const byte * for backwards compatibility.
unsigned int MinIVLength() const
returns minimal length of IVs accepted by this object
unsigned int IVSize() const
Returns length of the IV accepted by this object.
std::string IntToString(T value, unsigned int base=10)
Converts a value to a string.
Crypto++ library namespace.
Interface for retrieving values given their names.