#ifndef MD5_NATIVE_HH #define MD5_NATIVE_HH #include #include #include class MD5_native { public: typedef unsigned char Digest[16]; MD5_native(); void init(); void update(unsigned char *, size_t); void finalize(); void digest(Digest); private: static void transform(uint32_t[4], unsigned char[64]); static void encode(unsigned char *, uint32_t *, size_t); static void decode(uint32_t *, unsigned char *, size_t); uint32_t state[4]; // state (ABCD) uint32_t count[2]; // number of bits, modulo 2^64 (lsb first) unsigned char buffer[64]; // input buffer bool finalized; Digest digest_val; }; #endif // MD5_NATIVE_HH