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