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)())
Hash *Hash::New()
{
- // TODO: Make generic
- return New("sha224");
+ return New(default_algorithm);
}
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");
{
sha1_register();
sha256_register();
+ default_algorithm = "sha224";
}