-bool FileCache::load_sha1(const std::string &sha1_raw, std::ostream &os)
-{
- std::ostringstream tmp_os(std::ios_base::binary);
- if(!load(hex_encode(sha1_raw), tmp_os))
- return false;
- SHA1 sha1;
- sha1.addBytes(tmp_os.str().c_str(), tmp_os.str().length());
- unsigned char *digest = sha1.getDigest();
- std::string sha1_real_raw((char*)digest, 20);
- free(digest);
- if(sha1_real_raw != sha1_raw){
- verbosestream<<"FileCache["<<m_dir<<"]: filename "<<sha1_real_raw
- <<" mismatches actual checksum"<<std::endl;
- return false;
- }
- os<<tmp_os.str();
- return true;
-}