Crypto++
trunhash.h
1 #ifndef CRYPTOPP_TRUNHASH_H
2 #define CRYPTOPP_TRUNHASH_H
3 
4 #include "cryptlib.h"
5 
6 NAMESPACE_BEGIN(CryptoPP)
7 
9 {
10 public:
11  void Update(const byte *input, size_t length) {}
12  unsigned int DigestSize() const {return 0;}
13  void TruncatedFinal(byte *digest, size_t digestSize) {}
14  bool TruncatedVerify(const byte *digest, size_t digestLength) {return true;}
15 };
16 
17 //! construct new HashModule with smaller DigestSize() from existing one
18 template <class T>
20 {
21 public:
22  TruncatedHashTemplate(T hm, unsigned int digestSize)
23  : m_hm(hm), m_digestSize(digestSize) {}
24  TruncatedHashTemplate(const byte *key, size_t keyLength, unsigned int digestSize)
25  : m_hm(key, keyLength), m_digestSize(digestSize) {}
26  TruncatedHashTemplate(size_t digestSize)
27  : m_digestSize(digestSize) {}
28 
29  void Restart()
30  {m_hm.Restart();}
31  void Update(const byte *input, size_t length)
32  {m_hm.Update(input, length);}
33  unsigned int DigestSize() const {return m_digestSize;}
34  void TruncatedFinal(byte *digest, size_t digestSize)
35  {m_hm.TruncatedFinal(digest, digestSize);}
36  bool TruncatedVerify(const byte *digest, size_t digestLength)
37  {return m_hm.TruncatedVerify(digest, digestLength);}
38 
39 private:
40  T m_hm;
41  unsigned int m_digestSize;
42 };
43 
45 
46 NAMESPACE_END
47 
48 #endif
construct new HashModule with smaller DigestSize() from existing one
Definition: trunhash.h:19
unsigned int DigestSize() const
size of the hash/digest/MAC returned by Final()
Definition: trunhash.h:33
bool TruncatedVerify(const byte *digest, size_t digestLength)
truncated version of Verify()
Definition: trunhash.h:14
void TruncatedFinal(byte *digest, size_t digestSize)
truncated version of Final()
Definition: trunhash.h:34
bool TruncatedVerify(const byte *digest, size_t digestLength)
truncated version of Verify()
Definition: trunhash.h:36
void Restart()
discard the current state, and restart with a new message
Definition: trunhash.h:29
unsigned int DigestSize() const
size of the hash/digest/MAC returned by Final()
Definition: trunhash.h:12
void Update(const byte *input, size_t length)
process more input
Definition: trunhash.h:11
void Update(const byte *input, size_t length)
process more input
Definition: trunhash.h:31
interface for hash functions and data processing part of MACs
Definition: cryptlib.h:530
void TruncatedFinal(byte *digest, size_t digestSize)
truncated version of Final()
Definition: trunhash.h:13