TruncatedHashTemplate< T > Class Template Reference

Construct new HashModule with smaller digest size from an existing one. More...

`#include <trunhash.h>`

Inheritance diagram for TruncatedHashTemplate< T >:

## Public Member Functions

| TruncatedHashTemplate (T hm, unsigned int digestSize)
| Construct a TruncatedHashTemplate.
| TruncatedHashTemplate (const byte *key, size_t keyLength, unsigned int digestSize)
| Construct a TruncatedHashTemplate.
| TruncatedHashTemplate (size_t digestSize)
| Construct a TruncatedHashTemplate.
void | Restart ()
| Restart the hash.
void | Update (const byte *input, size_t length)
| Updates a hash with additional input.
unsigned int | DigestSize () const
| Provides the digest size of the hash.
void | TruncatedFinal (byte *digest, size_t digestSize)
| Computes the hash of the current message.
bool | TruncatedVerify (const byte *digest, size_t digestLength)
| Verifies the hash of the current message.
Public Member Functions inherited from HashTransformation
HashTransformation & | Ref ()
| Provides a reference to this object.
virtual byte * | CreateUpdateSpace (size_t &size)
| Request space which can be written into by the caller.
virtual void | Final (byte *digest)
| Computes the hash of the current message.
unsigned int | TagSize () const
| Provides the tag size of the hash.
virtual unsigned int | BlockSize () const
| Provides the block size of the compression function.
virtual unsigned int | OptimalBlockSize () const
| Provides the input block size most efficient for this hash.
virtual unsigned int | OptimalDataAlignment () const
| Provides input and output data alignment for optimal performance.
virtual void | CalculateDigest (byte *digest, const byte *input, size_t length)
| Updates the hash with additional input and computes the hash of the current message.
virtual bool | Verify (const byte *digest)
| Verifies the hash of the current message.
virtual bool | VerifyDigest (const byte *digest, const byte *input, size_t length)
| Updates the hash with additional input and verifies the hash of the current message.
virtual void | CalculateTruncatedDigest (byte *digest, size_t digestSize, const byte *input, size_t length)
| Updates the hash with additional input and computes the hash of the current message.
virtual bool | VerifyTruncatedDigest (const byte *digest, size_t digestLength, const byte *input, size_t length)
| Updates the hash with additional input and verifies the hash of the current message.
Public Member Functions inherited from Algorithm
| Algorithm (bool checkSelfTestStatus=true)
| Interface for all crypto algorithms.
virtual std::string | AlgorithmName () const
| Provides the name of this algorithm.
virtual std::string | AlgorithmProvider () const
| Retrieve the provider of this algorithm.
Public Member Functions inherited from Clonable
virtual Clonable * | Clone () const
| Copies this object.

## Detailed Description

template<class T>
class TruncatedHashTemplate< T >

Construct new HashModule with smaller digest size from an existing one.

Template Parameters

  T | HashTransformation derived class

Definition at line 31 of file trunhash.h.

## Constructor & Destructor Documentation

## TruncatedHashTemplate() [1/3]

template<class T >

TruncatedHashTemplate< T >::TruncatedHashTemplate | ( | T | hm,
|  | unsigned int | digestSize
| ) |  |

inline

Construct a TruncatedHashTemplate.

Definition at line 35 of file trunhash.h.

## TruncatedHashTemplate() [2/3]

template<class T >

TruncatedHashTemplate< T >::TruncatedHashTemplate | ( | const byte * | key,
|  | size_t | keyLength,
|  | unsigned int | digestSize
| ) |  |

inline

Construct a TruncatedHashTemplate.

Definition at line 38 of file trunhash.h.

## TruncatedHashTemplate() [3/3]

template<class T >

TruncatedHashTemplate< T >::TruncatedHashTemplate | ( | size_t | digestSize | ) |

inline

Construct a TruncatedHashTemplate.

Definition at line 41 of file trunhash.h.

## Member Function Documentation

## Restart()

template<class T >

void TruncatedHashTemplate< T >::Restart | ( |  | ) |

inline virtual

Restart the hash.

Discards the current state, and restart for a new message

Reimplemented from HashTransformation.

Definition at line 44 of file trunhash.h.

## Update()

template<class T >

void TruncatedHashTemplate< T >::Update | ( | const byte * | input,
|  | size_t | length
| ) |  |

inline virtual

Updates a hash with additional input.

Parameters

  input | the additional input as a buffer
  length | the size of the buffer, in bytes

Implements HashTransformation.

Definition at line 46 of file trunhash.h.

## DigestSize()

template<class T >

unsigned int TruncatedHashTemplate< T >::DigestSize | ( |  | ) | const

inline virtual

Provides the digest size of the hash.

Returns
  the digest size of the hash.

Implements HashTransformation.

Definition at line 48 of file trunhash.h.

## TruncatedFinal()

template<class T >

void TruncatedHashTemplate< T >::TruncatedFinal | ( | byte * | digest,
|  | size_t | digestSize
| ) |  |

inline virtual

Computes the hash of the current message.

Parameters

  digest | a pointer to the buffer to receive the hash
  digestSize | the size of the truncated digest, in bytes

TruncatedFinal() calls Final() and then copies digestSize bytes to digest. The hash is restarted the hash for the next message.

Precondition
  `COUNTOF(digest) <= DigestSize()` or `COUNTOF(digest) <= HASH::DIGESTSIZE` ensures the output byte buffer is a valid size.

Implements HashTransformation.

Definition at line 49 of file trunhash.h.

## TruncatedVerify()

template<class T >

bool TruncatedHashTemplate< T >::TruncatedVerify | ( | const byte * | digest,
|  | size_t | digestLength
| ) |  |

inline virtual

Verifies the hash of the current message.

Parameters

  digest | a pointer to the buffer of an existing hash
  digestLength | the size of the truncated hash, in bytes

Returns
  `true` if the existing hash matches the computed hash, `false` otherwise

Exceptions

  InvalidArgument() | if digestLength exceeds DigestSize()

TruncatedVerify() is a truncated version of Verify(). It can operate on a buffer smaller than DigestSize(). However, digestLength cannot exceed DigestSize().

Verify() performs a bitwise compare on the buffers using VerifyBufsEqual(), which is a constant time comparison function. digestLength cannot exceed DigestSize().

TruncatedVerify() restarts the hash for the next message.

Precondition
  `digestLength <= DigestSize()` or `digestLength <= HASH::DIGESTSIZE` ensures the input byte buffer is a valid size.

Reimplemented from HashTransformation.

Definition at line 51 of file trunhash.h.

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

- trunhash.h