VMAC< T_BlockCipher, T_DigestBitSize > Class Template Reference

VMAC More...

`#include <vmac.h>`

Inheritance diagram for VMAC< T_BlockCipher, T_DigestBitSize >:

## Public Types

typedef word64 | HashWordType
enum | IV_Requirement { UNIQUE_IV = 0, RANDOM_IV, UNPREDICTABLE_RANDOM_IV, INTERNALLY_GENERATED_IV, NOT_RESYNCHRONIZABLE }

## Public Member Functions

size_t | MinKeyLength () const
size_t | MaxKeyLength () const
size_t | DefaultKeyLength () const
size_t | GetValidKeyLength (size_t n) const
SimpleKeyingInterface::IV_Requirement | IVRequirement () const
unsigned int | IVSize () const
std::string | AlgorithmName () const
| returns name of this algorithm, not universally implemented yet
unsigned int | MinIVLength () const
| returns minimal length of IVs accepted by this object
void | Resynchronize (const byte *nonce, int length=-1)
| resynchronize with an IV. ivLength=-1 means use IVSize()
void | GetNextIV (RandomNumberGenerator &rng, byte *IV)
| get a secure IV for the next message More...
unsigned int | DigestSize () const
| size of the hash/digest/MAC returned by Final()
void | UncheckedSetKey (const byte *userKey, unsigned int keylength, const NameValuePairs &params)
void | TruncatedFinal (byte *mac, size_t size)
| truncated version of Final()
unsigned int | BlockSize () const
| block size of underlying compression function, or 0 if not block based
ByteOrder | GetByteOrder () const
unsigned int | OptimalBlockSize () const
unsigned int | OptimalDataAlignment () const
void | Update (const byte *input, size_t length)
byte * | CreateUpdateSpace (size_t &size)
void | Restart ()
virtual bool | IsValidKeyLength (size_t n) const
| returns whether n is a valid key length
virtual void | SetKey (const byte *key, size_t length, const NameValuePairs &params=g_nullNameValuePairs)
| set or reset the key of this object More...
void | SetKeyWithRounds (const byte *key, size_t length, int rounds)
| calls SetKey() with an NameValuePairs object that just specifies "Rounds"
void | SetKeyWithIV (const byte *key, size_t length, const byte *iv, size_t ivLength)
| calls SetKey() with an NameValuePairs object that just specifies "IV"
void | SetKeyWithIV (const byte *key, size_t length, const byte *iv)
| calls SetKey() with an NameValuePairs object that just specifies "IV"
bool | IsResynchronizable () const
| returns whether this object can be resynchronized (i.e. supports initialization vectors) More...
bool | CanUseRandomIVs () const
| returns whether this object can use random IVs (in addition to ones returned by GetNextIV)
bool | CanUsePredictableIVs () const
| returns whether this object can use random but possibly predictable IVs (in addition to ones returned by GetNextIV)
bool | CanUseStructuredIVs () const
| returns whether this object can use structured IVs, for example a counter (in addition to ones returned by GetNextIV)
unsigned int | DefaultIVLength () const
| returns default length of IVs accepted by this object
virtual unsigned int | MaxIVLength () const
| returns maximal length of IVs accepted by this object
HashTransformation & | Ref ()
| return a reference to this object, useful for passing a temporary object to a function that takes a non-const reference
virtual void | Final (byte *digest)
| compute hash for current message, then restart for a new message More...
unsigned int | TagSize () const
| same as DigestSize()
virtual void | CalculateDigest (byte *digest, const byte *input, size_t length)
| use this if your input is in one piece and you don't want to call Update() and Final() separately
virtual bool | Verify (const byte *digest)
| verify that digest is a valid digest for the current message, then reinitialize the object More...
virtual bool | VerifyDigest (const byte *digest, const byte *input, size_t length)
| use this if your input is in one piece and you don't want to call Update() and Verify() separately
virtual void | CalculateTruncatedDigest (byte *digest, size_t digestSize, const byte *input, size_t length)
| truncated version of CalculateDigest()
virtual bool | TruncatedVerify (const byte *digest, size_t digestLength)
| truncated version of Verify()
virtual bool | VerifyTruncatedDigest (const byte *digest, size_t digestLength, const byte *input, size_t length)
| truncated version of VerifyDigest()
virtual Clonable * | Clone () const
| this is not implemented by most classes yet

## Static Public Member Functions

static std::string | StaticAlgorithmName ()

## Protected Member Functions

const BlockCipher & | GetCipher () const
void | HashEndianCorrectedBlock (const word64 *data)
size_t | HashMultipleBlocks (const word64 *input, size_t length)
void | Init ()
word64 * | StateBuf ()
word64 * | DataBuf ()
void | VHASH_Update_SSE2 (const word64 *data, size_t blocksRemainingInWord64, int tagPart)
template<bool T_128BitTag>
void | VHASH_Update_Template (const word64 *data, size_t blockRemainingInWord128)
void | VHASH_Update (const word64 *data, size_t blocksRemainingInWord128)
word64 * | m_polyState ()
size_t | SS1 ()
size_t | m_polyStateSize ()
word64 * | m_nhKey ()
size_t | SS2 ()
size_t | m_nhKeySize ()
byte * | m_data ()
size_t | SS3 ()
size_t | m_dataSize ()
word64 * | m_l3Key ()
size_t | SS4 ()
size_t | m_l3KeySize ()
byte * | m_nonce ()
size_t | SS5 ()
size_t | m_nonceSize ()
byte * | m_pad ()
size_t | SS6 ()
size_t | m_padSize ()
size_t | SST ()
void | AllocateBlocks ()
word64 | GetBitCountHi () const
word64 | GetBitCountLo () const
void | PadLastBlock (unsigned int lastBlockSize, byte padFirst=0x80)
void | HashBlock (const HashWordType *input)
const Algorithm & | GetAlgorithm () const
void | ThrowIfInvalidKeyLength (size_t length)
void | ThrowIfResynchronizable ()
void | ThrowIfInvalidIV (const byte *iv)
size_t | ThrowIfInvalidIVLength (int size)
const byte * | GetIVAndThrowIfInvalid (const NameValuePairs &params, size_t &size)
void | AssertValidKeyLength (size_t length) const
void | ThrowIfInvalidTruncatedSize (size_t size) const

## Protected Attributes

AlignedSecByteBlock | m_aggregate
bool | m_is128
bool | m_padCached
bool | m_isFirstBlock
int | m_L1KeyLength

## Detailed Description

### template<class T_BlockCipher, int T_DigestBitSize = 128>
class VMAC< T_BlockCipher, T_DigestBitSize >

VMAC

Definition at line 55 of file vmac.h.

## Member Function Documentation

void VMAC_Base::GetNextIV | ( | RandomNumberGenerator & | rng,
|  | byte * | IV
| ) |  |

virtual inherited

get a secure IV for the next message

This method should be called after you finish encrypting one message and are ready to start the next one. After calling it, you must call SetKey() or Resynchronize() before using this object again. This method is not implemented on decryption objects.

Reimplemented from SimpleKeyingInterface.

virtual void SimpleKeyingInterface::SetKey | ( | const byte * | key,
|  | size_t | length,
|  | const NameValuePairs & | params = `g_nullNameValuePairs`
| ) |  |

virtual inherited

set or reset the key of this object

Parameters

  params | is used to specify Rounds, BlockSize, etc.

Reimplemented in ECB_OneWay, and AuthenticatedSymmetricCipherBase.

bool SimpleKeyingInterface::IsResynchronizable | ( |  | ) | const

inline inherited

returns whether this object can be resynchronized (i.e. supports initialization vectors)

If this function returns true, and no IV is passed to SetKey() and CanUseStructuredIVs()==true, an IV of all 0's will be assumed.

Definition at line 385 of file cryptlib.h.

Referenced by CipherModeBase::OptimalDataAlignment().

virtual void HashTransformation::Final | ( | byte * | digest | ) |

inline virtual inherited

compute hash for current message, then restart for a new message

Precondition
  size of digest == DigestSize().

Definition at line 544 of file cryptlib.h.

Referenced by PKCS5_PBKDF2_HMAC< T >::DeriveKey().

virtual bool HashTransformation::Verify | ( | const byte * | digest | ) |

inline virtual inherited

verify that digest is a valid digest for the current message, then reinitialize the object

Default implementation is to call Final() and do a bitwise comparison between its output and digest.

Definition at line 574 of file cryptlib.h.

The documentation for this class was generated from the following file:

- vmac.h