#include
unsigned char *MD2(const unsigned char *d, unsigned long n, unsigned char *md);
int MD2_Init(MD2_CTX *c); int MD2_Update(MD2_CTX *c, const unsigned char *data, unsigned long len); int MD2_Final(unsigned char *md, MD2_CTX *c);
#include
unsigned char *MD4(const unsigned char *d, unsigned long n, unsigned char *md);
int MD4_Init(MD4_CTX *c); int MD4_Update(MD4_CTX *c, const void *data, unsigned long len); int MD4_Final(unsigned char *md, MD4_CTX *c);
#include
unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md);
int MD5_Init(MD5_CTX *c); int MD5_Update(MD5_CTX *c, const void *data, unsigned long len); int MD5_Final(unsigned char *md, MD5_CTX *c);
_M_D_2_(_), _M_D_4_(_), and _M_D_5_(_) compute the MD2, MD4, and MD5 message digest of the nn bytes at dd and place it in mmdd (which must have space for MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16 bytes of output). If mmdd is NULL, the digest is placed in a static array.
The following functions may be used if the message is not completely stored in memory:
_M_D_2___I_n_i_t_(_) initializes a MMDD22__CCTTXX structure.
_M_D_2___U_p_d_a_t_e_(_) can be called repeatedly with chunks of the message to be hashed (lleenn bytes at ddaattaa).
_M_D_2___F_i_n_a_l_(_) places the message digest in mmdd, which must have space for MD2_DIGEST_LENGTH == 16 bytes of output, and erases the MMDD22__CCTTXX.
_M_D_4___I_n_i_t_(_), _M_D_4___U_p_d_a_t_e_(_), _M_D_4___F_i_n_a_l_(_), _M_D_5___I_n_i_t_(_), _M_D_5___U_p_d_a_t_e_(_), and _M_D_5___F_i_n_a_l_(_) are analogous using an MMDD44__CCTTXX and MMDD55__CCTTXX structure.
Applications should use the higher level functions _E_V_P___D_i_g_e_s_t_I_n_i_t(3) etc. instead of calling the hash functions directly.
_M_D_2___I_n_i_t_(_), _M_D_2___U_p_d_a_t_e_(_), _M_D_2___F_i_n_a_l_(_), _M_D_4___I_n_i_t_(_), _M_D_4___U_p_d_a_t_e_(_), _M_D_4___F_i_n_a_l_(_), _M_D_5___I_n_i_t_(_), _M_D_5___U_p_d_a_t_e_(_), and _M_D_5___F_i_n_a_l_(_) return 1 for success, 0 otherwise.
_M_D_4_(_), _M_D_4___I_n_i_t_(_), and _M_D_4___U_p_d_a_t_e_(_) are available in OpenSSL 0.9.6 and above.