00001
00004 #ifndef _MD5_H
00005 #define _MD5_H
00006
00007 #ifdef __cplusplus
00008 extern "C" {
00009 #endif
00010
00014 typedef struct
00015 {
00016 unsigned long total[2];
00017 unsigned long state[4];
00018 unsigned char buffer[64];
00019 unsigned char ipad[64];
00020 unsigned char opad[64];
00021 }
00022 md5_context;
00023
00029 void md5_starts( md5_context *ctx );
00030
00038 void md5_update( md5_context *ctx, unsigned char *input, int ilen );
00039
00046 void md5_finish( md5_context *ctx, unsigned char *output );
00047
00055 void md5( unsigned char *input, int ilen,
00056 unsigned char *output );
00057
00067 int md5_file( char *path, unsigned char *output );
00068
00076 void md5_hmac_starts( md5_context *ctx,
00077 unsigned char *key, int keylen );
00078
00086 void md5_hmac_update( md5_context *ctx,
00087 unsigned char *input, int ilen );
00088
00095 void md5_hmac_finish( md5_context *ctx, unsigned char *output );
00096
00106 void md5_hmac( unsigned char *key, int keylen,
00107 unsigned char *input, int ilen,
00108 unsigned char *output );
00109
00115 int md5_self_test( int verbose );
00116
00117 #ifdef __cplusplus
00118 }
00119 #endif
00120
00121 #endif