00001
00004 #ifndef _MD2_H
00005 #define _MD2_H
00006
00007 #ifdef __cplusplus
00008 extern "C" {
00009 #endif
00010
00014 typedef struct
00015 {
00016 unsigned char cksum[16];
00017 unsigned char state[48];
00018 unsigned char buffer[16];
00019 unsigned char ipad[64];
00020 unsigned char opad[64];
00021 int left;
00022 }
00023 md2_context;
00024
00030 void md2_starts( md2_context *ctx );
00031
00039 void md2_update( md2_context *ctx, unsigned char *input, int ilen );
00040
00047 void md2_finish( md2_context *ctx, unsigned char *output );
00048
00056 void md2( unsigned char *input, int ilen,
00057 unsigned char *output );
00058
00068 int md2_file( char *path, unsigned char *output );
00069
00077 void md2_hmac_starts( md2_context *ctx,
00078 unsigned char *key, int keylen );
00079
00087 void md2_hmac_update( md2_context *ctx,
00088 unsigned char *input, int ilen );
00089
00096 void md2_hmac_finish( md2_context *ctx, unsigned char *output );
00097
00107 void md2_hmac( unsigned char *key, int keylen,
00108 unsigned char *input, int ilen,
00109 unsigned char *output );
00110
00116 int md2_self_test( int verbose );
00117
00118 #ifdef __cplusplus
00119 }
00120 #endif
00121
00122 #endif