00001
00002
00003
00007 #ifndef _SHA2_H
00008 #define _SHA2_H
00009
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013
00017 typedef struct
00018 {
00019 unsigned long total[2];
00020 unsigned long state[8];
00021 unsigned char buffer[64];
00022 unsigned char ipad[64];
00023 unsigned char opad[64];
00024 int is224;
00025 }
00026 sha2_context;
00027
00034 void sha2_starts( sha2_context *ctx, int is224 );
00035
00043 void sha2_update( sha2_context *ctx, unsigned char *input, int ilen );
00044
00051 void sha2_finish( sha2_context *ctx, unsigned char *output );
00052
00061 void sha2( unsigned char *input, int ilen,
00062 unsigned char *output, int is224 );
00063
00074 int sha2_file( char *path, unsigned char *output, int is224 );
00075
00084 void sha2_hmac_starts( sha2_context *ctx, int is224,
00085 unsigned char *key, int keylen );
00086
00094 void sha2_hmac_update( sha2_context *ctx,
00095 unsigned char *input, int ilen );
00096
00103 void sha2_hmac_finish( sha2_context *ctx, unsigned char *output );
00104
00115 void sha2_hmac( unsigned char *key, int keylen,
00116 unsigned char *input, int ilen,
00117 unsigned char *output, int is224 );
00118
00124 int sha2_self_test( int verbose );
00125
00126 #ifdef __cplusplus
00127 }
00128 #endif
00129
00130 #endif