#ifndef _SHS_H
#define _SHS_H

// The old typedef of u-long --> LONG conflicted with some Windows stuff
// so I made it ULONG instead    -dhaley aug-15-04

typedef unsigned char BYTE;
typedef unsigned long ULONG;

#define SHS_BLOCKSIZE 64

#define SHS_DIGESTSIZE 20

/** An shs digest.
 */
typedef struct {
  ULONG digest[5];		/**< message digest */
  ULONG countLo;			/**< 64-bit bit count, low half */
  ULONG countHi;			/**< 64-bit bit count, high half */
  ULONG data[16];		/**< SHS data buffer */
  BYTE reverse_wanted;		/**< true to reverse (little_endian) false to not */
} SHS_INFO;

void shsInit(SHS_INFO *shsInfo);
void shsUpdate(SHS_INFO *shsInfo, const BYTE * buffer, int count);
void shsFinal(SHS_INFO *shsInfo);
#endif
