diff options
author | lzheng@chromium.org <lzheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-16 01:59:11 +0000 |
---|---|---|
committer | lzheng@chromium.org <lzheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-16 01:59:11 +0000 |
commit | 9cadfb34adaf42ad30e398b24ab06e5bc587e57a (patch) | |
tree | feac40cac461f17b3b8decd17f3696de43e0043c /chrome/browser/safe_browsing/safe_browsing_util.cc | |
parent | 58d1666040e4750a0d5662d35b44ab22c891c57c (diff) | |
download | chromium_src-9cadfb34adaf42ad30e398b24ab06e5bc587e57a.zip chromium_src-9cadfb34adaf42ad30e398b24ab06e5bc587e57a.tar.gz chromium_src-9cadfb34adaf42ad30e398b24ab06e5bc587e57a.tar.bz2 |
Lookup hash prefix in safebrowsing service.
To achieve that, added an interface in safe browsing database and safe browsing service.
TEST=safe_browsing_service_browsertest, safe_browsing_util_unittest, safe_browsing_database_unittest
BUG=60822
Review URL: http://codereview.chromium.org/6299007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75049 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/safe_browsing/safe_browsing_util.cc')
-rw-r--r-- | chrome/browser/safe_browsing/safe_browsing_util.cc | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/chrome/browser/safe_browsing/safe_browsing_util.cc b/chrome/browser/safe_browsing/safe_browsing_util.cc index 3e449e0..06a18ca 100644 --- a/chrome/browser/safe_browsing/safe_browsing_util.cc +++ b/chrome/browser/safe_browsing/safe_browsing_util.cc @@ -162,12 +162,19 @@ void SBEntry::SetFullHashAt(int index, const SBFullHash& full_hash) { namespace safe_browsing_util { +// Listnames that browser can process. const char kMalwareList[] = "goog-malware-shavar"; const char kPhishingList[] = "goog-phish-shavar"; - const char kBinUrlList[] = "goog-badbinurl-shavar"; const char kBinHashList[] = "goog-badbinhash-shavar"; +// Keywords to identify a list type from listname. +// TODO(lzheng): check if this can be replaced by full listnames. +const char kMalwareListKey[] = "-malware-"; +const char kPhishingListKey[] = "-phish-"; +const char kBinUrlListKey[] = "-badbinurl-"; +const char kBinHashListKey[] = "-badbinhash-"; + int GetListId(const std::string& name) { int id; if (name == safe_browsing_util::kMalwareList) { @@ -409,8 +416,17 @@ void GeneratePathsToCheck(const GURL& url, std::vector<std::string>* paths) { paths->push_back(path + "?" + query); } -int CompareFullHashes(const GURL& url, - const std::vector<SBFullHashResult>& full_hashes) { +int GetHashIndex(const SBFullHash& hash, + const std::vector<SBFullHashResult>& full_hashes) { + for (size_t i = 0; i < full_hashes.size(); ++i) { + if (hash == full_hashes[i].hash) + return static_cast<int>(i); + } + return -1; +} + +int GetUrlHashIndex(const GURL& url, + const std::vector<SBFullHashResult>& full_hashes) { if (full_hashes.empty()) return -1; @@ -424,11 +440,8 @@ int CompareFullHashes(const GURL& url, base::SHA256HashString(hosts[h] + paths[p], key.full_hash, sizeof(SBFullHash)); - - for (size_t i = 0; i < full_hashes.size(); ++i) { - if (key == full_hashes[i].hash) - return static_cast<int>(i); - } + int index = GetHashIndex(key, full_hashes); + if (index != -1) return index; } } @@ -436,15 +449,19 @@ int CompareFullHashes(const GURL& url, } bool IsPhishingList(const std::string& list_name) { - return list_name.find("-phish-") != std::string::npos; + return list_name.find(kPhishingListKey) != std::string::npos; } bool IsMalwareList(const std::string& list_name) { - return list_name.find("-malware-") != std::string::npos; + return list_name.find(kMalwareListKey) != std::string::npos; } bool IsBadbinurlList(const std::string& list_name) { - return list_name.find("-badbinurl-") != std::string::npos; + return list_name.find(kBinUrlListKey) != std::string::npos; +} + +bool IsBadbinhashList(const std::string& list_name) { + return list_name.find(kBinHashListKey) != std::string::npos; } static void DecodeWebSafe(std::string* decoded) { @@ -503,4 +520,9 @@ GURL GeneratePhishingReportUrl(const std::string& report_page, return google_util::AppendGoogleLocaleParam(report_url); } +void StringToSBFullHash(const std::string& hash_in, SBFullHash* hash_out) { + DCHECK_EQ(static_cast<size_t>(base::SHA256_LENGTH), hash_in.size()); + memcpy(hash_out->full_hash, hash_in.data(), base::SHA256_LENGTH); +} + } // namespace safe_browsing_util |