X-Git-Url: http://git.vrable.net/?p=cumulus.git;a=blobdiff_plain;f=sha1.cc;h=7111f94ab40ad67fcb7745f90def6861728f0efe;hp=517b224491a3ad69145c27cdd2aea77e3084d5be;hb=f38dd9bcb0caffd3fc9126b05788c936690e8288;hpb=5eeb3286b0a8a892195462c37815a064311ce1f6 diff --git a/sha1.cc b/sha1.cc index 517b224..7111f94 100644 --- a/sha1.cc +++ b/sha1.cc @@ -1,35 +1,36 @@ /* 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 -- Expansion function fix - - Modified by Michael Vrable 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 -- Expansion function fix + * Modifications by Michael Vrable 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 +#include #include #include @@ -348,6 +349,28 @@ void SHA1Checksum::process(const void *data, size_t len) 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); @@ -358,7 +381,7 @@ string SHA1Checksum::checksum_str() { uint8_t resbuf[20]; char hexbuf[4]; - string result = "sha-1:"; + string result = "sha1="; sha1_finish_ctx(&ctx, resbuf);