X-Git-Url: http://git.vrable.net/?p=cumulus.git;a=blobdiff_plain;f=hash.cc;h=571bc1df6a8571979377942f620a752bb1d300f5;hp=2054bcc3256854ac500a845dbfc852039963f97e;hb=HEAD;hpb=15f090d3b2f0bf3994aacd00ab07da3b1f65ea00 diff --git a/hash.cc b/hash.cc index 2054bcc..571bc1d 100644 --- a/hash.cc +++ b/hash.cc @@ -27,18 +27,17 @@ using std::map; using std::string; +static string default_algorithm; static map hash_registry; void Hash::Register(const std::string& name, Hash *(*constructor)()) { - printf("Registered hash algorithm %s\n", name.c_str()); hash_registry.insert(make_pair(name, constructor)); } Hash *Hash::New() { - // TODO: Make generic - return New("sha224"); + return New(default_algorithm); } Hash *Hash::New(const std::string& name) @@ -50,6 +49,17 @@ Hash *Hash::New(const std::string& name) return constructor(); } +std::string Hash::hash_file(const char *filename) +{ + string result; + Hash *hash = Hash::New(); + if (hash->update_from_file(filename)) + result = hash->digest_str(); + + delete hash; + return result; +} + bool Hash::update_from_file(const char *filename) { FILE *f = fopen(filename, "rb"); @@ -102,4 +112,5 @@ void hash_init() { sha1_register(); sha256_register(); + default_algorithm = "sha224"; }