00001
00004 #ifndef _SHA2_H
00005 #define _SHA2_H
00006
00007 #ifdef __cplusplus
00008 extern "C" {
00009 #endif
00010
00014 typedef struct
00015 {
00016 unsigned long total[2];
00017 unsigned long state[8];
00018 unsigned char buffer[64];
00019 unsigned char ipad[64];
00020 unsigned char opad[64];
00021 int is224;
00022 }
00023 sha2_context;
00024
00031 void sha2_starts( sha2_context *ctx, int is224 );
00032
00040 void sha2_update( sha2_context *ctx, unsigned char *input, int ilen );
00041
00048 void sha2_finish( sha2_context *ctx, unsigned char *output );
00049
00058 void sha2( unsigned char *input, int ilen,
00059 unsigned char *output, int is224 );
00060
00071 int sha2_file( char *path, unsigned char *output, int is224 );
00072
00081 void sha2_hmac_starts( sha2_context *ctx, int is224,
00082 unsigned char *key, int keylen );
00083
00091 void sha2_hmac_update( sha2_context *ctx,
00092 unsigned char *input, int ilen );
00093
00100 void sha2_hmac_finish( sha2_context *ctx, unsigned char *output );
00101
00112 void sha2_hmac( unsigned char *key, int keylen,
00113 unsigned char *input, int ilen,
00114 unsigned char *output, int is224 );
00115
00121 int sha2_self_test( int verbose );
00122
00123 #ifdef __cplusplus
00124 }
00125 #endif
00126
00127 #endif