00001
00002
00003
00007 #ifndef _MD5_H
00008 #define _MD5_H
00009
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013
00017 typedef struct
00018 {
00019 unsigned long total[2];
00020 unsigned long state[4];
00021 unsigned char buffer[64];
00022 unsigned char ipad[64];
00023 unsigned char opad[64];
00024 }
00025 md5_context;
00026
00032 void md5_starts( md5_context *ctx );
00033
00041 void md5_update( md5_context *ctx, unsigned char *input, int ilen );
00042
00049 void md5_finish( md5_context *ctx, unsigned char *output );
00050
00058 void md5( unsigned char *input, int ilen,
00059 unsigned char *output );
00060
00070 int md5_file( char *path, unsigned char *output );
00071
00079 void md5_hmac_starts( md5_context *ctx,
00080 unsigned char *key, int keylen );
00081
00089 void md5_hmac_update( md5_context *ctx,
00090 unsigned char *input, int ilen );
00091
00098 void md5_hmac_finish( md5_context *ctx, unsigned char *output );
00099
00109 void md5_hmac( unsigned char *key, int keylen,
00110 unsigned char *input, int ilen,
00111 unsigned char *output );
00112
00118 int md5_self_test( int verbose );
00119
00120 #ifdef __cplusplus
00121 }
00122 #endif
00123
00124 #endif