From e7dc130f304bb10854e4b38488fabd258c99dcab Mon Sep 17 00:00:00 2001 From: mdw Date: Thu, 19 Apr 2001 18:26:33 +0000 Subject: [PATCH] Add CRC as another hash function. --- Makefile.m4 | 9 ++++-- crc32.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ crc32.h | 63 +++++++++++++++++++++++++++++++++++++++ hashsum.c | 8 +++-- 4 files changed, 174 insertions(+), 5 deletions(-) create mode 100644 crc32.c create mode 100644 crc32.h diff --git a/Makefile.m4 b/Makefile.m4 index 2a0ac39..d1d55cd 100644 --- a/Makefile.m4 +++ b/Makefile.m4 @@ -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 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 +#include + +#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 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 + +#ifndef CATACOMB_GHASH_H +# include "ghash.h" +#endif + +/*----- Generic interface -------------------------------------------------*/ + +extern const gchash gcrc32; + +/*----- That's all, folks -------------------------------------------------*/ + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/hashsum.c b/hashsum.c index 0776ee8..f2ced4b 100644 --- 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 }; -- 2.11.0