X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/d03ab969116fe715d569304c1c474749b2f64529..c65df27983057ec76ed0e72bb370f9a5ae7dad28:/sha.h diff --git a/sha.h b/sha.h index 8f72def..fe924c7 100644 --- a/sha.h +++ b/sha.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: sha.h,v 1.1 1999/09/03 08:41:12 mdw Exp $ + * $Id: sha.h,v 1.6 2004/04/08 01:36:15 mdw Exp $ * * Implementation of the SHA-1 hash function * @@ -27,24 +27,17 @@ * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: sha.h,v $ - * Revision 1.1 1999/09/03 08:41:12 mdw - * Initial import. - * - */ - /*----- Notes on the SHA-1 hash function ----------------------------------* * * SHA (Secure Hash Algorithm) was designed by the NSA, for use with the - * Digital Signature Algorithm. It has gained wide acceptance since then, - * and is probably now most people's collision-resistant function of choice. - * The author prefers RIPEMD-160, for no particularly good reasons. + * Digital Signature Algorithm. It is defined by FIPS 180-1. It has gained + * wide acceptance since its initial publication, and is probably now most + * people's collision-resistant function of choice. The author prefers + * RIPEMD-160, for no particularly good reasons. */ -#ifndef SHA_H -#define SHA_H +#ifndef CATACOMB_SHA_H +#define CATACOMB_SHA_H #ifdef __cplusplus extern "C" { @@ -54,17 +47,22 @@ #include +#ifndef CATACOMB_GHASH_H +# include "ghash.h" +#endif + /*----- Magic numbers -----------------------------------------------------*/ #define SHA_BUFSZ 64 #define SHA_HASHSZ 20 +#define SHA_STATESZ 20 /*----- Data structures ---------------------------------------------------*/ typedef struct sha_ctx { uint32 a, b, c, d, e; /* Chaining variables */ - unsigned long count; /* Byte count so far */ - int off; /* Offset into buffer */ + uint32 nl, nh; /* Byte count so far */ + unsigned off; /* Offset into buffer */ octet buf[SHA_BUFSZ]; /* Accumulation buffer */ } sha_ctx; @@ -148,6 +146,10 @@ extern void sha_done(sha_ctx */*ctx*/, void */*hash*/); extern unsigned long sha_state(sha_ctx */*ctx*/, void */*state*/); +/*----- Generic hash interface --------------------------------------------*/ + +extern const gchash sha; + /*----- That's all, folks -------------------------------------------------*/ #ifdef __cplusplus