Replace boost::scoped_ptr with std::unique_ptr.
[cumulus.git] / hash.cc
diff --git a/hash.cc b/hash.cc
index 2054bcc..571bc1d 100644 (file)
--- a/hash.cc
+++ b/hash.cc
 using std::map;
 using std::string;
 
+static string default_algorithm;
 static map<string, Hash *(*)()> 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";
 }