7 #ifndef CRYPTOPP_VMAC_H 8 #define CRYPTOPP_VMAC_H 16 #if CRYPTOPP_BOOL_X32 || defined(CRYPTOPP_DISABLE_MIXED_ASM) 17 # define CRYPTOPP_DISABLE_VMAC_ASM 1 29 unsigned int IVSize()
const {
return GetCipher().BlockSize();}
31 void Resynchronize(
const byte *nonce,
int length=-1);
33 unsigned int DigestSize()
const {
return m_is128 ? 16 : 8;};
34 void UncheckedSetKey(
const byte *userKey,
unsigned int keylength,
const NameValuePairs ¶ms);
35 void TruncatedFinal(byte *mac,
size_t size);
36 unsigned int BlockSize()
const {
return m_L1KeyLength;}
38 unsigned int OptimalDataAlignment()
const;
42 virtual int DefaultDigestSize()
const =0;
44 void HashEndianCorrectedBlock(
const word64 *data);
45 size_t HashMultipleBlocks(
const word64 *input,
size_t length);
47 word64* StateBuf() {
return NULLPTR;}
48 word64* DataBuf() {
return (word64 *)(
void*)m_data();}
50 void VHASH_Update_SSE2(
const word64 *data,
size_t blocksRemainingInWord64,
int tagPart);
51 template <
bool T_128BitTag>
52 void VHASH_Update_Template(
const word64 *data,
size_t blockRemainingInWord128);
53 void VHASH_Update(
const word64 *data,
size_t blocksRemainingInWord128);
55 CRYPTOPP_BLOCK_1(polyState, word64, 4*(m_is128+1))
56 CRYPTOPP_BLOCK_2(nhKey, word64, m_L1KeyLength/
sizeof(word64) + 2*m_is128)
57 CRYPTOPP_BLOCK_3(data, byte, m_L1KeyLength)
58 CRYPTOPP_BLOCK_4(l3Key, word64, 2*(m_is128+1))
59 CRYPTOPP_BLOCK_5(nonce, byte, IVSize())
60 CRYPTOPP_BLOCK_6(pad, byte, IVSize())
61 CRYPTOPP_BLOCKS_END(6)
63 bool m_is128, m_padCached, m_isFirstBlock;
64 unsigned int m_L1KeyLength;
77 template <
class T_BlockCipher,
int T_DigestBitSize = 128>
81 static std::string StaticAlgorithmName() {
return std::string(
"VMAC(") + T_BlockCipher::StaticAlgorithmName() +
")-" +
IntToString(T_DigestBitSize);}
85 int DefaultDigestSize()
const {
return T_DigestBitSize/8;}
86 typename T_BlockCipher::Encryption m_cipher;
VMAC message authentication code.
const char * DigestSize()
int, in bytes
Interface for message authentication codes.
ByteOrder
Provides the byte ordering.
unsigned int MinIVLength() const
Provides the minimum size of an IV.
VMAC message authentication code base class.
Provides a base implementation of SimpleKeyingInterface.
Abstract base classes that provide a uniform interface to this library.
Interface for random number generators.
std::string AlgorithmName() const
Provides the name of this algorithm.
std::string AlgorithmProvider() const
Retrieve the provider of this algorithm.
unsigned int BlockSize() const
Provides the block size of the compression function.
byte order is little-endian
Interface for one direction (encryption or decryption) of a block cipher.
unsigned int IVSize() const
Returns length of the IV accepted by this object.
Classes and functions for implementing secret key algorithms.
const char * IV()
ConstByteArrayParameter, also accepts const byte * for backwards compatibility.
Iterated hash base class.
unsigned int DigestSize() const
Provides the digest size of the hash.
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.