/* sha1.cc - Functions to compute SHA1 message digest of data streams
- according to the NIST specification FIPS-180-1.
-
- Copyright (C) 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
- Copyright (C) 2006 Michael Vrable
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-/* Written by Scott G. Miller
- Credits:
- Robert Klep <robert@ilse.nl> -- Expansion function fix
-
- Modified by Michael Vrable <mvrable@cs.ucsd.edu> to simplify the interface
- and add an object-oriented wrapper. Original code (in C) taken from GNU
- coreutils (Debian package 5.97-5).
-*/
+ * according to the NIST specification FIPS-180-1.
+ * part of Cumulus: Smart Filesystem Backup to Dumb Servers
+ *
+ * Copyright (C) 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
+ * Copyright (C) 2006-2007 The Regents of the University of California
+ * Written by Scott G. Miller
+ * Additional Credits:
+ * Robert Klep <robert@ilse.nl> -- Expansion function fix
+ * Modifications by Michael Vrable <mvrable@cs.ucsd.edu> to integrate into
+ * Cumulus.
+ *
+ * Original code (in C) is taken from GNU coreutils (Debian package 5.97-5).
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
#include "sha1.h"
#include <stddef.h>
+#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
sha1_process_bytes(data, len, &ctx);
}
+bool SHA1Checksum::process_file(const char *filename)
+{
+ FILE *f = fopen(filename, "rb");
+ if (f == NULL)
+ return false;
+
+ while (!feof(f)) {
+ char buf[4096];
+ size_t bytes = fread(buf, 1, sizeof(buf), f);
+
+ if (ferror(f)) {
+ fclose(f);
+ return false;
+ }
+
+ process(buf, bytes);
+ }
+
+ fclose(f);
+ return true;
+}
+
const uint8_t *SHA1Checksum::checksum()
{
sha1_finish_ctx(&ctx, resbuf);
{
uint8_t resbuf[20];
char hexbuf[4];
- string result = "sha-1:";
+ string result = "sha1=";
sha1_finish_ctx(&ctx, resbuf);