/* -*-c-*-
*
- * $Id: hashsum.c,v 1.3 2000/07/29 17:02:43 mdw Exp $
+ * $Id: hashsum.c,v 1.8 2001/04/19 18:26:33 mdw Exp $
*
* Hash files using some secure hash function
*
/*----- 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.
+ *
+ * Revision 1.6 2001/01/25 21:40:14 mdw
+ * Support for new SHA variants added.
+ *
+ * Revision 1.5 2000/12/06 20:33:27 mdw
+ * Make flags be macros rather than enumerations, to ensure that they're
+ * unsigned.
+ *
+ * Revision 1.4 2000/08/04 23:23:44 mdw
+ * Various <ctype.h> fixes.
+ *
* Revision 1.3 2000/07/29 17:02:43 mdw
* (checkhash): Be pettier about spaces between the hash and filename, for
* compatiblity with `md5sum'.
#include "ghash.h"
+#include "crc32.h"
+#include "md2.h"
#include "md4.h"
#include "md5.h"
#include "rmd128.h"
#include "rmd256.h"
#include "rmd320.h"
#include "sha.h"
+#include "sha256.h"
+#include "sha384.h"
+#include "sha512.h"
#include "tiger.h"
/*----- Static variables --------------------------------------------------*/
static const gchash *hashtab[] = {
- &md5, &md4, &sha, &rmd128, &rmd160, &rmd256, &rmd320, &tiger,
+ &md5, &md4, &md2,
+ &sha, &sha256, &sha384, &sha512,
+ &rmd128, &rmd160, &rmd256, &rmd320,
+ &tiger, &gcrc32,
0
};
-enum {
- f_binary = 1,
- f_bogus = 2,
- f_verbose = 4,
- f_check = 8,
- f_files = 16,
- f_raw = 32,
- f_oddhash = 64,
- f_escape = 128
-};
+#define f_binary 1u
+#define f_bogus 2u
+#define f_verbose 4u
+#define f_check 8u
+#define f_files 16u
+#define f_raw 32u
+#define f_oddhash 64u
+#define f_escape 128u
/*----- Support functions -------------------------------------------------*/
/* --- Raw: just read exactly what's written up to a null byte --- */
-#define NEXTCH (fp ? getc(fp) : *p++)
+#define NEXTCH (fp ? getc(fp) : (unsigned char)*p++)
#define EOFCH (fp ? EOF : 0)
if (raw) {
again:
ch = NEXTCH;
- while (isspace((unsigned char)ch))
+ while (isspace(ch))
ch = NEXTCH;
if (ch == '#') {
do ch = NEXTCH; while (ch != '\n' && ch != EOFCH);
if (ch == q)
break;
- if (!q && isspace((unsigned char)ch))
+ if (!q && isspace(ch))
break;
/* --- Otherwise contribute and continue --- */