/* This program is part of the TACLeBench benchmark suite. Version V 1.x Name: sha.h Author: Peter C. Gutmann's (heavily modified by Uwe Hollerbach) NIST Secure Hash Algorithm Source: Peter C. Gutmann's implementation as found in Applied Cryptography by Bruce Schneier Changes: no major functional changes License: May be used, modified, and re-distributed freely. */ #ifndef SHA_H #define SHA_H /* Useful defines & typedefs */ typedef unsigned char BYTE; typedef unsigned long LONG; typedef unsigned size_t; /* Type to use for unaligned operations. */ #define SHA_BLOCKSIZE 64 #define SHA_DIGESTSIZE 20 #define LITTLE_ENDIAN #define NULL ((void *) 0) extern unsigned volatile char sha_data[32743]; struct SHA_MY_FILE { unsigned volatile char *data; size_t size; unsigned cur_pos; }; struct SHA_INFO { LONG digest[5]; /* message digest */ LONG count_lo, count_hi; /* 64-bit bit count */ LONG data[16]; /* SHA data buffer */ }; /* Forward declaration of functions */ void sha_transform(struct SHA_INFO *); void sha_byte_reverse(LONG *buffer, int count); void sha_init(void); size_t sha_fread(void *, size_t, size_t, struct SHA_MY_FILE *); void sha_update(struct SHA_INFO *, BYTE *, int); void sha_final(struct SHA_INFO *); void sha_stream(struct SHA_INFO *, struct SHA_MY_FILE *); __attribute__((noinline)) __attribute__((export_name("entrypoint"))) void sha_main(void); int sha_return(void); __attribute__((noinline)) __attribute__((export_name("main"))) int main(void); #endif // SHA_H