| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/safe_browsing/safe_browsing_util.h" | 5 #include "chrome/browser/safe_browsing/safe_browsing_util.h" |
| 6 | 6 |
| 7 #include "base/base64.h" | 7 #include "base/base64.h" |
| 8 #include "base/hmac.h" | |
| 9 #include "base/sha2.h" | |
| 10 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "crypto/hmac.h" |
| 10 #include "crypto/sha2.h" |
| 11 #include "chrome/browser/google/google_util.h" | 11 #include "chrome/browser/google/google_util.h" |
| 12 #include "googleurl/src/gurl.h" | 12 #include "googleurl/src/gurl.h" |
| 13 #include "googleurl/src/url_util.h" | 13 #include "googleurl/src/url_util.h" |
| 14 #include "net/base/escape.h" | 14 #include "net/base/escape.h" |
| 15 #include "unicode/locid.h" | 15 #include "unicode/locid.h" |
| 16 | 16 |
| 17 #if defined(OS_WIN) | 17 #if defined(OS_WIN) |
| 18 #include "chrome/installer/util/browser_distribution.h" | 18 #include "chrome/installer/util/browser_distribution.h" |
| 19 #endif | 19 #endif |
| 20 | 20 |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 if (full_hashes.empty()) | 429 if (full_hashes.empty()) |
| 430 return -1; | 430 return -1; |
| 431 | 431 |
| 432 std::vector<std::string> hosts, paths; | 432 std::vector<std::string> hosts, paths; |
| 433 GenerateHostsToCheck(url, &hosts); | 433 GenerateHostsToCheck(url, &hosts); |
| 434 GeneratePathsToCheck(url, &paths); | 434 GeneratePathsToCheck(url, &paths); |
| 435 | 435 |
| 436 for (size_t h = 0; h < hosts.size(); ++h) { | 436 for (size_t h = 0; h < hosts.size(); ++h) { |
| 437 for (size_t p = 0; p < paths.size(); ++p) { | 437 for (size_t p = 0; p < paths.size(); ++p) { |
| 438 SBFullHash key; | 438 SBFullHash key; |
| 439 base::SHA256HashString(hosts[h] + paths[p], | 439 crypto::SHA256HashString(hosts[h] + paths[p], |
| 440 key.full_hash, | 440 key.full_hash, |
| 441 sizeof(SBFullHash)); | 441 sizeof(SBFullHash)); |
| 442 int index = GetHashIndex(key, full_hashes); | 442 int index = GetHashIndex(key, full_hashes); |
| 443 if (index != -1) return index; | 443 if (index != -1) return index; |
| 444 } | 444 } |
| 445 } | 445 } |
| 446 | 446 |
| 447 return -1; | 447 return -1; |
| 448 } | 448 } |
| 449 | 449 |
| 450 bool IsPhishingList(const std::string& list_name) { | 450 bool IsPhishingList(const std::string& list_name) { |
| 451 return list_name.compare(kPhishingList) == 0; | 451 return list_name.compare(kPhishingList) == 0; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 478 std::string key_copy = key; | 478 std::string key_copy = key; |
| 479 DecodeWebSafe(&key_copy); | 479 DecodeWebSafe(&key_copy); |
| 480 std::string decoded_key; | 480 std::string decoded_key; |
| 481 base::Base64Decode(key_copy, &decoded_key); | 481 base::Base64Decode(key_copy, &decoded_key); |
| 482 | 482 |
| 483 std::string mac_copy = mac; | 483 std::string mac_copy = mac; |
| 484 DecodeWebSafe(&mac_copy); | 484 DecodeWebSafe(&mac_copy); |
| 485 std::string decoded_mac; | 485 std::string decoded_mac; |
| 486 base::Base64Decode(mac_copy, &decoded_mac); | 486 base::Base64Decode(mac_copy, &decoded_mac); |
| 487 | 487 |
| 488 base::HMAC hmac(base::HMAC::SHA1); | 488 crypto::HMAC hmac(crypto::HMAC::SHA1); |
| 489 if (!hmac.Init(decoded_key)) | 489 if (!hmac.Init(decoded_key)) |
| 490 return false; | 490 return false; |
| 491 const std::string data_str(data, data_length); | 491 const std::string data_str(data, data_length); |
| 492 unsigned char digest[kSafeBrowsingMacDigestSize]; | 492 unsigned char digest[kSafeBrowsingMacDigestSize]; |
| 493 if (!hmac.Sign(data_str, digest, kSafeBrowsingMacDigestSize)) | 493 if (!hmac.Sign(data_str, digest, kSafeBrowsingMacDigestSize)) |
| 494 return false; | 494 return false; |
| 495 | 495 |
| 496 return !memcmp(digest, decoded_mac.data(), kSafeBrowsingMacDigestSize); | 496 return !memcmp(digest, decoded_mac.data(), kSafeBrowsingMacDigestSize); |
| 497 } | 497 } |
| 498 | 498 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 513 std::string client_name("googlechrome"); | 513 std::string client_name("googlechrome"); |
| 514 #endif | 514 #endif |
| 515 | 515 |
| 516 GURL report_url(report_page + | 516 GURL report_url(report_page + |
| 517 StringPrintf(kReportParams, client_name.c_str(), continue_esc.c_str(), | 517 StringPrintf(kReportParams, client_name.c_str(), continue_esc.c_str(), |
| 518 current_esc.c_str())); | 518 current_esc.c_str())); |
| 519 return google_util::AppendGoogleLocaleParam(report_url); | 519 return google_util::AppendGoogleLocaleParam(report_url); |
| 520 } | 520 } |
| 521 | 521 |
| 522 void StringToSBFullHash(const std::string& hash_in, SBFullHash* hash_out) { | 522 void StringToSBFullHash(const std::string& hash_in, SBFullHash* hash_out) { |
| 523 DCHECK_EQ(static_cast<size_t>(base::SHA256_LENGTH), hash_in.size()); | 523 DCHECK_EQ(static_cast<size_t>(crypto::SHA256_LENGTH), hash_in.size()); |
| 524 memcpy(hash_out->full_hash, hash_in.data(), base::SHA256_LENGTH); | 524 memcpy(hash_out->full_hash, hash_in.data(), crypto::SHA256_LENGTH); |
| 525 } | 525 } |
| 526 | 526 |
| 527 std::string SBFullHashToString(const SBFullHash& hash) { | 527 std::string SBFullHashToString(const SBFullHash& hash) { |
| 528 DCHECK_EQ(static_cast<size_t>(base::SHA256_LENGTH), sizeof(hash.full_hash)); | 528 DCHECK_EQ(static_cast<size_t>(crypto::SHA256_LENGTH), sizeof(hash.full_hash)); |
| 529 return std::string(hash.full_hash, sizeof(hash.full_hash)); | 529 return std::string(hash.full_hash, sizeof(hash.full_hash)); |
| 530 } | 530 } |
| 531 } // namespace safe_browsing_util | 531 } // namespace safe_browsing_util |
| OLD | NEW |