blob: 1b435c5df8e3562bf92e9ba70b7c5774c9717b3f [file] [log] [blame]
/* --------------------------------- SHS.H ------------------------------- */
/*
* NIST proposed Secure Hash Standard.
*
* Written 2 September 1992, Peter C. Gutmann.
* This implementation placed in the public domain.
*
* Comments to pgut1@cs.aukuni.ac.nz
*/
/* Useful defines/typedefs */
#ifndef SHS_H
#define SHS_H
#include<config.h>
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
# include <stdint.h>
# else
typedef unsigned int uint8_t __attribute__((mode(QI)));
/* This is a blatant hack: on Solaris 2.5, pthread.h defines uint32_t
in pthread.h, which we sometimes include. We protect our
definition the same way Solaris 2.5 does, to avoid redefining it. */
# ifndef _UINT32_T
typedef unsigned int uint32_t __attribute__((mode(SI)));
# endif
# endif
#endif
/* The SHS block size and message digest sizes, in bytes */
#define SHS_BLOCKSIZE 64
#define SHS_DIGESTSIZE 20
/* The structure for storing SHS info */
typedef struct {
uint32_t digest [5]; /* Message digest */
uint32_t countLo, countHi; /* 64-bit bit count */
uint32_t data [16]; /* SHS data buffer */
} SHS_INFO;
/* Turn off prototypes if requested */
#if (defined(NOPROTO) && defined(PROTO))
# undef PROTO
#endif
/* Used to remove arguments in function prototypes for non-ANSI C */
#ifdef PROTO
# define OF(a) a
#else /* !PROTO */
# define OF(a) ()
#endif /* ?PROTO */
#define local static
void shsInit OF((SHS_INFO *shsInfo));
void shsUpdate OF((SHS_INFO *shsInfo, uint8_t *buffer, int count));
void shsFinal OF((SHS_INFO *shsInfo));
#endif