/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // LibMd5 // // Implementation of MD5 hash function. Originally written by Alexander Peslyak. Modified by WaterJuice retaining // Public Domain license. // // This is free and unencumbered software released into the public domain - June 2013 waterjuice.org /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef _LibMd5_h_ #define _LibMd5_h_ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // IMPORTS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // TYPES /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Md5Context - This must be initialised using Md5Initialised. Do not modify the contents of this structure directly. typedef struct { uint32_t lo; uint32_t hi; uint32_t a; uint32_t b; uint32_t c; uint32_t d; uint8_t buffer[64]; uint32_t block[16]; } Md5Context; #define MD5_HASH_SIZE ( 128 / 8 ) typedef struct { uint8_t bytes [MD5_HASH_SIZE]; } MD5_HASH; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Md5Initialise // // Initialises an MD5 Context. Use this to initialise/reset a context. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Md5Initialise ( Md5Context* Context ); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Md5Update // // Adds data to the MD5 context. This will process the data and update the internal state of the context. Keep on // calling this function until all the data has been added. Then call Md5Finalise to calculate the hash. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Md5Update ( Md5Context* Context, void* Buffer, uint32_t BufferSize ); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Md5Finalise // // Performs the final calculation of the hash and returns the digest (16 byte buffer containing 128bit hash). After // calling this, Md5Initialised must be used to reuse the context. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Md5Finalise ( Md5Context* Context, MD5_HASH* Digest ); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #endif //_LibMd5_h_