/* -*-c-*-
*
- * $Id: sha.h,v 1.2 1999/11/19 13:20:08 mdw Exp $
+ * $Id: sha.h,v 1.5 2000/10/15 19:09:20 mdw Exp $
*
* Implementation of the SHA-1 hash function
*
/*----- Revision history --------------------------------------------------*
*
* $Log: sha.h,v $
+ * Revision 1.5 2000/10/15 19:09:20 mdw
+ * Support HMAC mode for hash functions which need to store more state than
+ * the hash output size.
+ *
+ * Revision 1.4 2000/06/17 11:32:52 mdw
+ * Change buffer offset to be unsigned.
+ *
+ * Revision 1.3 1999/12/10 23:20:03 mdw
+ * New hash interface requirements.
+ *
* Revision 1.2 1999/11/19 13:20:08 mdw
* Modify notes section slightly.
*
* 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" {
#include <mLib/bits.h>
+#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;
extern unsigned long sha_state(sha_ctx */*ctx*/, void */*state*/);
+/*----- Generic hash interface --------------------------------------------*/
+
+extern const gchash sha;
+
/*----- That's all, folks -------------------------------------------------*/
#ifdef __cplusplus