Add CRC as another hash function.
authormdw <mdw>
Thu, 19 Apr 2001 18:26:33 +0000 (18:26 +0000)
committermdw <mdw>
Thu, 19 Apr 2001 18:26:33 +0000 (18:26 +0000)
Makefile.m4
crc32.c [new file with mode: 0644]
crc32.h [new file with mode: 0644]
hashsum.c

index 2a0ac39..d1d55cd 100644 (file)
@@ -1,6 +1,6 @@
 ## -*-makefile-*-
 ##
-## $Id: Makefile.m4,v 1.50 2001/04/06 22:05:10 mdw Exp $
+## $Id: Makefile.m4,v 1.51 2001/04/19 18:26:32 mdw Exp $
 ##
 ## Makefile for Catacomb
 ##
@@ -29,6 +29,9 @@
 ##----- Revision history ----------------------------------------------------
 ##
 ## $Log: Makefile.m4,v $
+## Revision 1.51  2001/04/19 18:26:32  mdw
+## Add CRC as another hash function.
+##
 ## Revision 1.50  2001/04/06 22:05:10  mdw
 ## Add support for SSL pseudo-random function.
 ##
@@ -290,7 +293,7 @@ pkginclude_HEADERS = \
        allwithsuffix(`ciphers', `cipher_modes', `.h') \
        allwithsuffix(`hashes', `hash_modes', `.h') \
        addsuffix(`cipher_modes', `-def.h') \
-       addsuffix(`hash_modes', `-def.h')
+       addsuffix(`hash_modes', `-def.h') crc32.h
 
 define(`MP_SOURCES',
        `mpx.c mpx-kmul.c mpx-ksqr.c mpscan.c mparena.c \
@@ -333,7 +336,7 @@ libcatacomb_la_SOURCES = \
        daftstory.h \
        addsuffix(join(`ciphers', `-', `cipher_modes'), `.c') \
        addsuffix(join(`hashes', `-', `hash_modes'), `.c') \
-       addsuffix(`ciphers', `.c') addsuffix(`hashes', `.c')
+       addsuffix(`ciphers', `.c') addsuffix(`hashes', `.c') crc32.c
 
 des-base.lo: des-tab.h
 blowfish.lo: blowfish-tab.h
diff --git a/crc32.c b/crc32.c
new file mode 100644 (file)
index 0000000..c500a59
--- /dev/null
+++ b/crc32.c
@@ -0,0 +1,99 @@
+/* -*-c-*-
+ *
+ * $Id: crc32.c,v 1.1 2001/04/19 18:26:32 mdw Exp $
+ *
+ * Generic hash wrapper for CRC32
+ *
+ * (c) 2001 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: crc32.c,v $
+ * Revision 1.1  2001/04/19 18:26:32  mdw
+ * Add CRC as another hash function.
+ *
+ */
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <mLib/crc32.h>
+#include <mLib/sub.h>
+
+#include "arena.h"
+#include "crc32.h"
+#include "ghash.h"
+#include "paranoia.h"
+
+/*----- Main code ---------------------------------------------------------*/
+
+typedef struct gctx {
+  ghash h;
+  uint32 c;
+  octet buf[4];
+} gctx;
+
+static const ghash_ops gops;
+
+static ghash *ghinit(void)
+{
+  gctx *g = S_CREATE(gctx);
+  g->h.ops = &gops;
+  g->c = 0;
+  return (&g->h);
+}
+
+static void ghhash(ghash *h, const void *p, size_t sz)
+{
+  gctx *g = (gctx *)h;
+  CRC32(g->c, g->c, p, sz);
+}
+
+static octet *ghdone(ghash *h, void *buf)
+{
+  gctx *g = (gctx *)h;
+  if (!buf)
+    buf = g->buf;
+  STORE32(buf, g->c);
+  return (buf);
+}
+
+static void ghdestroy(ghash *h)
+{
+  gctx *g = (gctx *)h;
+  BURN(*g);
+  S_DESTROY(g);
+}
+
+static void ghcopy(ghash *h)
+{
+  gctx *g = (gctx *)h;
+  gctx *gg = S_CREATE(gctx);
+  memcpy(gg, g, sizeof(gctx));
+  return (&gg->h);
+}
+
+static const ghash_ops gops = { &gcrc32, ghhash, ghdone, ghdestroy, ghcopy };
+const gchash gcrc32 = { "crc32", 4, ghinit };
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/crc32.h b/crc32.h
new file mode 100644 (file)
index 0000000..cb07943
--- /dev/null
+++ b/crc32.h
@@ -0,0 +1,63 @@
+/* -*-c-*-
+ *
+ * $Id: crc32.h,v 1.1 2001/04/19 18:26:32 mdw Exp $
+ *
+ * Generic hash wrapper for CRC32
+ *
+ * (c) 2001 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: crc32.h,v $
+ * Revision 1.1  2001/04/19 18:26:32  mdw
+ * Add CRC as another hash function.
+ *
+ */
+
+#ifndef CATACOMB_CRC32_H
+#define CATACOMB_CRC32_H
+
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <mLib/crc32.h>
+
+#ifndef CATACOMB_GHASH_H
+#  include "ghash.h"
+#endif
+
+/*----- Generic interface -------------------------------------------------*/
+
+extern const gchash gcrc32;
+
+/*----- That's all, folks -------------------------------------------------*/
+
+#ifdef __cplusplus
+  }
+#endif
+
+#endif
index 0776ee8..f2ced4b 100644 (file)
--- a/hashsum.c
+++ b/hashsum.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: hashsum.c,v 1.7 2001/02/21 20:03:22 mdw Exp $
+ * $Id: hashsum.c,v 1.8 2001/04/19 18:26:33 mdw Exp $
  *
  * Hash files using some secure hash function
  *
@@ -30,6 +30,9 @@
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: hashsum.c,v $
+ * Revision 1.8  2001/04/19 18:26:33  mdw
+ * Add CRC as another hash function.
+ *
  * Revision 1.7  2001/02/21 20:03:22  mdw
  * Added support for MD2 hash function.
  *
@@ -76,6 +79,7 @@
 
 #include "ghash.h"
 
+#include "crc32.h"
 #include "md2.h"
 #include "md4.h"
 #include "md5.h"
@@ -95,7 +99,7 @@ static const gchash *hashtab[] = {
   &md5, &md4, &md2,
   &sha, &sha256, &sha384, &sha512,
   &rmd128, &rmd160, &rmd256, &rmd320,
-  &tiger,
+  &tiger, &gcrc32,
   0
 };