TTMAC Class Reference

Two-Track-MAC More...

`#include <ttmac.h>`

Inheritance diagram for TTMAC:

## Public Types

typedef LittleEndian | ByteOrderClass
typedef word32 | HashWordType
enum | IV_Requirement { UNIQUE_IV = 0, RANDOM_IV, UNPREDICTABLE_RANDOM_IV, INTERNALLY_GENERATED_IV, NOT_RESYNCHRONIZABLE }

## Public Member Functions

Clonable * | Clone () const
std::string | AlgorithmName () const
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
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
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 | MinIVLength () const
| returns minimal length of IVs accepted by this object
virtual unsigned int | MaxIVLength () const
| returns maximal length of IVs accepted by this object
virtual void | Resynchronize (const byte *iv, int ivLength=-1)
| resynchronize with an IV. ivLength=-1 means use IVSize()
virtual void | GetNextIV (RandomNumberGenerator &rng, byte *IV)
| get a secure IV for the next message More...
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()

## Static Public Member Functions

static std::string | StaticAlgorithmName ()
static size_t | StaticGetValidKeyLength (size_t)
static void | CorrectEndianess (HashWordType *out, const HashWordType *in, size_t byteCount)

## Static Public Attributes

static const int | DIGESTSIZE =20
static const int | KEYLENGTH
static const int | MIN_KEYLENGTH
static const int | MAX_KEYLENGTH
static const int | DEFAULT_KEYLENGTH
static const int | IV_REQUIREMENT
static const int | IV_LENGTH
static const int | BLOCKSIZE
static CompileAssert <((T_BlockSize &(T_BlockSize-1))==0)> | cryptopp_assert___LINE__

## Protected Member Functions

void | HashEndianCorrectedBlock (const word32 *data)
void | Init ()
word32 * | StateBuf ()
word32 * | DataBuf ()
word32 | GetBitCountHi () const
word32 | GetBitCountLo () const
void | PadLastBlock (unsigned int lastBlockSize, byte padFirst=0x80)
virtual size_t | HashMultipleBlocks (const word32 *input, size_t length)
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

## Static Protected Member Functions

static void | Transform (word32 *digest, const word32 *X, bool last)

## Protected Attributes

FixedSizeSecBlock< word32, 10 > | m_digest
FixedSizeSecBlock< word32, 5 > | m_key
FixedSizeSecBlock< word32, T_BlockSize/sizeof(word32)> | m_data

## Detailed Description

Two-Track-MAC

160 Bit MAC with 160 Bit Key

Definition at line 34 of file ttmac.h.

## Member Function Documentation

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.

virtual void SimpleKeyingInterface::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 in VMAC_Base.

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:

- ttmac.h