Chromium Code Reviews| Index: components/safe_browsing_db/v4_protocol_manager_util.cc |
| diff --git a/components/safe_browsing_db/v4_protocol_manager_util.cc b/components/safe_browsing_db/v4_protocol_manager_util.cc |
| index 5d2511551bff93aca15624094772c25f7ff5dcdc..2a22cf551d4c987abc427ccc55a12c88da609d91 100644 |
| --- a/components/safe_browsing_db/v4_protocol_manager_util.cc |
| +++ b/components/safe_browsing_db/v4_protocol_manager_util.cc |
| @@ -7,10 +7,12 @@ |
| #include "base/base64.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "base/rand_util.h" |
| +#include "base/sha1.h" |
| #include "base/strings/string_util.h" |
| #include "base/strings/stringprintf.h" |
| #include "crypto/sha2.h" |
| #include "net/base/escape.h" |
| +#include "net/base/ip_address.h" |
| #include "net/http/http_request_headers.h" |
| #include "url/url_util.h" |
| @@ -85,6 +87,10 @@ return LINUX_PLATFORM; |
| #endif |
| } |
| +const ListIdentifier GetAnyIpMalwareId() { |
| + return ListIdentifier(ANY_PLATFORM, IP_RANGE, MALWARE_THREAT); |
| +} |
| + |
| const ListIdentifier GetChromeUrlApiId() { |
| return ListIdentifier(CHROME_PLATFORM, URL, API_ABUSE); |
| } |
| @@ -528,4 +534,36 @@ void V4ProtocolManagerUtil::SetClientInfoFromConfig( |
| client_info->set_client_version(config.version); |
| } |
| +// static |
| +bool V4ProtocolManagerUtil::GetIPV6AddressFromString( |
| + const std::string& ip_address, |
| + net::IPAddress* address) { |
| + DCHECK(address); |
| + if (!address->AssignFromIPLiteral(ip_address)) |
| + return false; |
| + if (address->IsIPv4()) |
| + *address = net::ConvertIPv4ToIPv4MappedIPv6(*address); |
| + return address->IsIPv6(); |
| +} |
| + |
| +// static |
| +bool V4ProtocolManagerUtil::IPAddressToEncodedIPV6Hash( |
| + const std::string& ip_address, |
| + FullHash* hashed_encoded_ip) { |
| + net::IPAddress address; |
| + if (!GetIPV6AddressFromString(ip_address, &address)) { |
| + return false; |
| + } |
| + std::string packed_ip = net::IPAddressToPackedString(address); |
| + if (packed_ip.empty()) { |
| + return false; |
| + } |
| + |
| + const std::string hash = base::SHA1HashString(packed_ip); |
|
Nathan Parker
2016/11/15 00:54:46
Maybe DCHECK that the size is 20, since that's wha
vakh (use Gerrit instead)
2016/11/15 01:03:41
Done.
|
| + hashed_encoded_ip->resize(hash.size() + 1); |
| + hashed_encoded_ip->replace(0, hash.size(), hash); |
| + (*hashed_encoded_ip)[hash.size()] = static_cast<unsigned char>(128); |
| + return true; |
| +} |
| + |
| } // namespace safe_browsing |