1#ifndef CRYPTOPP_MD2_H
2#define CRYPTOPP_MD2_H
3
4#include "cryptlib.h"
5#include "secblock.h"
6
7NAMESPACE_BEGIN(CryptoPP)
8
9namespace Weak1 {
10
11/// <a href="http://www.cryptolounge.org/wiki/MD2">MD2</a>
12class MD2 : public HashTransformation
13{
14public:
15	MD2();
16	void Update(const byte *input, size_t length);
17	void TruncatedFinal(byte *hash, size_t size);
18	unsigned int DigestSize() const {return DIGESTSIZE;}
19	unsigned int BlockSize() const {return BLOCKSIZE;}
20	static const char * StaticAlgorithmName() {return "MD2";}
21
22	CRYPTOPP_CONSTANT(DIGESTSIZE = 16)
23	CRYPTOPP_CONSTANT(BLOCKSIZE = 16)
24
25private:
26	void Transform();
27	void Init();
28	SecByteBlock m_X, m_C, m_buf;
29	unsigned int m_count;
30};
31
32}
33#if CRYPTOPP_ENABLE_NAMESPACE_WEAK >= 1
34namespace Weak {using namespace Weak1;}		// import Weak1 into CryptoPP::Weak
35#else
36using namespace Weak1;	// import Weak1 into CryptoPP with warning
37#ifdef __GNUC__
38#warning "You may be using a weak algorithm that has been retained for backwards compatibility. Please '#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1' before including this .h file and prepend the class name with 'Weak::' to remove this warning."
39#else
40#pragma message("You may be using a weak algorithm that has been retained for backwards compatibility. Please '#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1' before including this .h file and prepend the class name with 'Weak::' to remove this warning.")
41#endif
42#endif
43
44NAMESPACE_END
45
46#endif
47