summaryrefslogtreecommitdiffstats
path: root/chrome/browser/safe_browsing/safe_browsing_util.cc
diff options
context:
space:
mode:
authorlzheng@chromium.org <lzheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-16 01:59:11 +0000
committerlzheng@chromium.org <lzheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-16 01:59:11 +0000
commit9cadfb34adaf42ad30e398b24ab06e5bc587e57a (patch)
treefeac40cac461f17b3b8decd17f3696de43e0043c /chrome/browser/safe_browsing/safe_browsing_util.cc
parent58d1666040e4750a0d5662d35b44ab22c891c57c (diff)
downloadchromium_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.cc44
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