X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/eee161205f1139ee49e81c8efa33fe18380c917b..578a86d91941a0f722b87973d88e84ec2cf9a608:/sha256.h diff --git a/sha256.h b/sha256.h index c35a38e..c418118 100644 --- a/sha256.h +++ b/sha256.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: sha256.h,v 1.1 2000/10/15 17:48:15 mdw Exp $ + * $Id: sha256.h,v 1.4 2004/04/08 01:36:15 mdw Exp $ * * Implementation of the SHA-256 hash function * @@ -27,14 +27,6 @@ * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: sha256.h,v $ - * Revision 1.1 2000/10/15 17:48:15 mdw - * New SHA variants with longer outputs. - * - */ - /*----- Notes on the SHA-256 hash function ----------------------------------* * * SHA-1 (Secure Hash Algorithm) was designed by the NSA, for use with the @@ -62,6 +54,11 @@ #define SHA256_BUFSZ 64 #define SHA256_HASHSZ 32 +#define SHA256_STATESZ 32 + +#define SHA224_BUFSZ 64 +#define SHA224_HASHSZ 28 +#define SHA224_STATESZ 32 /*----- Data structures ---------------------------------------------------*/ @@ -70,11 +67,11 @@ typedef struct sha256_ctx { uint32 nl, nh; /* Byte count so far */ unsigned off; /* Offset into buffer */ octet buf[SHA256_BUFSZ]; /* Accumulation buffer */ -} sha256_ctx; +} sha256_ctx, sha224_ctx; /*----- Functions provided ------------------------------------------------*/ -/* --- @sha256_compress@ --- * +/* --- @sha256_compress@, @sha224_compress@ --- * * * Arguments: @sha256_ctx *ctx@ = pointer to context block * @const void *sbuf@ = pointer to buffer of appropriate size @@ -85,8 +82,9 @@ typedef struct sha256_ctx { */ extern void sha256_compress(sha256_ctx */*ctx*/, const void */*sbuf*/); +#define sha224_compress sha256_compress -/* --- @sha256_init@ --- * +/* --- @sha256_init@, @sha224_init@ --- * * * Arguments: @sha256_ctx *ctx@ = pointer to context block to initialize * @@ -96,8 +94,9 @@ extern void sha256_compress(sha256_ctx */*ctx*/, const void */*sbuf*/); */ extern void sha256_init(sha256_ctx */*ctx*/); +extern void sha224_init(sha256_ctx */*ctx*/); -/* --- @sha256_set@ --- * +/* --- @sha256_set@, @sha224_set@ --- * * * Arguments: @sha256_ctx *ctx@ = pointer to context block * @const void *buf@ = pointer to state buffer @@ -112,8 +111,9 @@ extern void sha256_init(sha256_ctx */*ctx*/); extern void sha256_set(sha256_ctx */*ctx*/, const void */*buf*/, unsigned long /*count*/); +#define sha224_set sha256_set -/* --- @sha256_hash@ --- * +/* --- @sha256_hash@, @sha224_hash@ --- * * * Arguments: @sha256_ctx *ctx@ = pointer to context block * @const void *buf@ = buffer of data to hash @@ -127,8 +127,9 @@ extern void sha256_set(sha256_ctx */*ctx*/, const void */*buf*/, extern void sha256_hash(sha256_ctx */*ctx*/, const void */*buf*/, size_t /*sz*/); +#define sha224_hash sha256_hash -/* --- @sha256_done@ --- * +/* --- @sha256_done@, @sha224_done@ --- * * * Arguments: @sha256_ctx *ctx@ = pointer to context block * @void *hash@ = pointer to output buffer @@ -139,8 +140,9 @@ extern void sha256_hash(sha256_ctx */*ctx*/, */ extern void sha256_done(sha256_ctx */*ctx*/, void */*hash*/); +extern void sha224_done(sha256_ctx */*ctx*/, void */*hash*/); -/* --- @sha256_state@ --- * +/* --- @sha256_state@, @sha224_state@ --- * * * Arguments: @sha256_ctx *ctx@ = pointer to context * @void *state@ = pointer to buffer for current state @@ -152,10 +154,12 @@ extern void sha256_done(sha256_ctx */*ctx*/, void */*hash*/); */ extern unsigned long sha256_state(sha256_ctx */*ctx*/, void */*state*/); +#define sha224_state sha256_state /*----- Generic hash interface --------------------------------------------*/ extern const gchash sha256; +extern const gchash sha224; /*----- That's all, folks -------------------------------------------------*/