00001
00004 #ifndef _MD4_H
00005 #define _MD4_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 md4_context;
00023
00029 void md4_starts( md4_context *ctx );
00030
00038 void md4_update( md4_context *ctx, unsigned char *input, int ilen );
00039
00046 void md4_finish( md4_context *ctx, unsigned char *output );
00047
00055 void md4( unsigned char *input, int ilen,
00056 unsigned char *output );
00057
00067 int md4_file( char *path, unsigned char *output );
00068
00076 void md4_hmac_starts( md4_context *ctx,
00077 unsigned char *key, int keylen );
00078
00086 void md4_hmac_update( md4_context *ctx,
00087 unsigned char *input, int ilen );
00088
00095 void md4_hmac_finish( md4_context *ctx, unsigned char *output );
00096
00106 void md4_hmac( unsigned char *key, int keylen,
00107 unsigned char *input, int ilen,
00108 unsigned char *output );
00109
00115 int md4_self_test( int verbose );
00116
00117 #ifdef __cplusplus
00118 }
00119 #endif
00120
00121 #endif