X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=sha1.cc;h=321807552535057a26c022e32d408b16b8ff4cdc;hb=79c9c740d9b78e357dd66cb9a4b77d03a5076f3b;hp=517b224491a3ad69145c27cdd2aea77e3084d5be;hpb=5eeb3286b0a8a892195462c37815a064311ce1f6;p=cumulus.git diff --git a/sha1.cc b/sha1.cc index 517b224..3218075 100644 --- a/sha1.cc +++ b/sha1.cc @@ -30,6 +30,7 @@ #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);