~zooko/cryptopp/trunk

« back to all changes in this revision

Viewing changes to md5mac.h

  • Committer: weidai
  • Date: 2011-01-07 01:30:24 UTC
  • Revision ID: svn-v4:57ff6487-cd31-0410-9ec3-f628ee90f5f0:trunk/c5:522
fix for compiling with Clang from Marshall Clow

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef CRYPTOPP_MD5MAC_H
2
 
#define CRYPTOPP_MD5MAC_H
3
 
 
4
 
/** \file
5
 
*/
6
 
 
7
 
#include "seckey.h"
8
 
#include "iterhash.h"
9
 
 
10
 
NAMESPACE_BEGIN(CryptoPP)
11
 
 
12
 
class CRYPTOPP_NO_VTABLE MD5MAC_Base : public FixedKeyLength<16>, public IteratedHash<word32, LittleEndian, 64, MessageAuthenticationCode>
13
 
{
14
 
public:
15
 
        static std::string StaticAlgorithmName() {return "MD5-MAC";}
16
 
        enum {DIGESTSIZE = 16};
17
 
 
18
 
        MD5MAC_Base() {SetStateSize(DIGESTSIZE);}
19
 
 
20
 
        void UncheckedSetKey(const byte *userKey, unsigned int keylength);
21
 
        void TruncatedFinal(byte *mac, size_t size);
22
 
        unsigned int DigestSize() const {return DIGESTSIZE;}
23
 
 
24
 
protected:
25
 
        static void Transform (word32 *buf, const word32 *in, const word32 *key);
26
 
        void HashEndianCorrectedBlock(const word32 *data) {Transform(m_digest, data, m_key+4);}
27
 
        void Init();
28
 
 
29
 
        static const word32 T[12];
30
 
        FixedSizeSecBlock<word32, 12> m_key;
31
 
};
32
 
 
33
 
//! <a href="http://www.weidai.com/scan-mirror/mac.html#MD5-MAC">MD5-MAC</a>
34
 
DOCUMENTED_TYPEDEF(MessageAuthenticationCodeFinal<MD5MAC_Base>, MD5MAC)
35
 
 
36
 
NAMESPACE_END
37
 
 
38
 
#endif