1 /*
2 * MD4
3 * (C) 1999-2007 Jack Lloyd
4 *
5 * Botan is released under the Simplified BSD License (see license.txt)
6 */
7 
8 #ifndef BOTAN_MD4_H_
9 #define BOTAN_MD4_H_
10 
11 #include <botan/mdx_hash.h>
12 
13 BOTAN_FUTURE_INTERNAL_HEADER(md4.h)
14 
15 namespace Botan {
16 
17 /**
18 * MD4
19 */
20 class BOTAN_PUBLIC_API(2,0) MD4 final : public MDx_HashFunction
21    {
22    public:
name()23       std::string name() const override { return "MD4"; }
output_length()24       size_t output_length() const override { return 16; }
clone()25       HashFunction* clone() const override { return new MD4; }
26       std::unique_ptr<HashFunction> copy_state() const override;
27 
28       void clear() override;
29 
MD4()30       MD4() : MDx_HashFunction(64, false, true), m_digest(4)
31          { clear(); }
32 
33    private:
34       void compress_n(const uint8_t input[], size_t blocks) override;
35       void copy_out(uint8_t[]) override;
36 
37       /**
38       * The digest value
39       */
40       secure_vector<uint32_t> m_digest;
41    };
42 
43 }
44 
45 #endif
46