| Index: components/safe_browsing_db/safe_browsing_db_util.h
|
| diff --git a/components/safe_browsing_db/safe_browsing_db_util.h b/components/safe_browsing_db/safe_browsing_db_util.h
|
| index cf5a4a46bb92c2f62a2893bbceddfb807764badd..94c895f94359ba01b8480e2b369216bcf2c5dee1 100644
|
| --- a/components/safe_browsing_db/safe_browsing_db_util.h
|
| +++ b/components/safe_browsing_db/safe_browsing_db_util.h
|
| @@ -9,26 +9,10 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/strings/string_piece.h"
|
| +#include "base/time/time.h"
|
|
|
| -// A truncated hash's type.
|
| -typedef uint32 SBPrefix;
|
| -
|
| -// A full hash.
|
| -union SBFullHash {
|
| - char full_hash[32];
|
| - SBPrefix prefix;
|
| -};
|
| -
|
| -inline bool SBFullHashEqual(const SBFullHash& a, const SBFullHash& b) {
|
| - return !memcmp(a.full_hash, b.full_hash, sizeof(a.full_hash));
|
| -}
|
| -
|
| -inline bool SBFullHashLess(const SBFullHash& a, const SBFullHash& b) {
|
| - return memcmp(a.full_hash, b.full_hash, sizeof(a.full_hash)) < 0;
|
| -}
|
|
|
| -// Generate full hash for the given string.
|
| -SBFullHash SBFullHashForString(const base::StringPiece& str);
|
| +class GURL;
|
|
|
| // Different types of threats that SafeBrowsing protects against.
|
| enum SBThreatType {
|
| @@ -59,4 +43,121 @@ enum SBThreatType {
|
| SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL,
|
| };
|
|
|
| +
|
| +// TODO(vakh): Move all these declarations under safe_browsing namespace.
|
| +// A truncated hash's type.
|
| +typedef uint32 SBPrefix;
|
| +
|
| +// A full hash.
|
| +union SBFullHash {
|
| + char full_hash[32];
|
| + SBPrefix prefix;
|
| +};
|
| +
|
| +// Used when we get a gethash response.
|
| +struct SBFullHashResult {
|
| + SBFullHash hash;
|
| + // TODO(shess): Refactor to allow ListType here.
|
| + int list_id;
|
| + std::string metadata;
|
| +};
|
| +
|
| +// Caches individual response from GETHASH request.
|
| +struct SBCachedFullHashResult {
|
| + SBCachedFullHashResult();
|
| + explicit SBCachedFullHashResult(const base::Time& in_expire_after);
|
| + ~SBCachedFullHashResult();
|
| +
|
| + base::Time expire_after;
|
| + std::vector<SBFullHashResult> full_hashes;
|
| +};
|
| +
|
| +
|
| +namespace safe_browsing {
|
| +
|
| +// SafeBrowsing list names.
|
| +extern const char kMalwareList[];
|
| +extern const char kPhishingList[];
|
| +// Binary Download list name.
|
| +extern const char kBinUrlList[];
|
| +// SafeBrowsing client-side detection whitelist list name.
|
| +extern const char kCsdWhiteList[];
|
| +// SafeBrowsing download whitelist list name.
|
| +extern const char kDownloadWhiteList[];
|
| +// SafeBrowsing extension list name.
|
| +extern const char kExtensionBlacklist[];
|
| +// SafeBrowsing csd malware IP blacklist name.
|
| +extern const char kIPBlacklist[];
|
| +// SafeBrowsing unwanted URL list.
|
| +extern const char kUnwantedUrlList[];
|
| +// SafeBrowsing off-domain inclusion whitelist list name.
|
| +extern const char kInclusionWhitelist[];
|
| +// This array must contain all Safe Browsing lists.
|
| +extern const char* kAllLists[9];
|
| +
|
| +
|
| +enum ListType {
|
| + INVALID = -1,
|
| + MALWARE = 0,
|
| + PHISH = 1,
|
| + BINURL = 2,
|
| + // Obsolete BINHASH = 3,
|
| + CSDWHITELIST = 4,
|
| + // SafeBrowsing lists are stored in pairs. Keep ListType 5
|
| + // available for a potential second list that we would store in the
|
| + // csd-whitelist store file.
|
| + DOWNLOADWHITELIST = 6,
|
| + // See above comment. Leave 7 available.
|
| + EXTENSIONBLACKLIST = 8,
|
| + // See above comment. Leave 9 available.
|
| + // Obsolete SIDEEFFECTFREEWHITELIST = 10,
|
| + // See above comment. Leave 11 available.
|
| + IPBLACKLIST = 12,
|
| + // See above comment. Leave 13 available.
|
| + UNWANTEDURL = 14,
|
| + // See above comment. Leave 15 available.
|
| + INCLUSIONWHITELIST = 16,
|
| + // See above comment. Leave 17 available.
|
| +};
|
| +
|
| +
|
| +inline bool SBFullHashEqual(const SBFullHash& a, const SBFullHash& b) {
|
| + return !memcmp(a.full_hash, b.full_hash, sizeof(a.full_hash));
|
| +}
|
| +
|
| +inline bool SBFullHashLess(const SBFullHash& a, const SBFullHash& b) {
|
| + return memcmp(a.full_hash, b.full_hash, sizeof(a.full_hash)) < 0;
|
| +}
|
| +
|
| +// Generate full hash for the given string.
|
| +SBFullHash SBFullHashForString(const base::StringPiece& str);
|
| +SBFullHash StringToSBFullHash(const std::string& hash_in);
|
| +std::string SBFullHashToString(const SBFullHash& hash_out);
|
| +
|
| +
|
| +// Maps a list name to ListType.
|
| +ListType GetListId(const base::StringPiece& name);
|
| +
|
| +// Maps a ListId to list name. Return false if fails.
|
| +bool GetListName(ListType list_id, std::string* list);
|
| +
|
| +// Canonicalizes url as per Google Safe Browsing Specification.
|
| +// See section 6.1 in
|
| +// http://code.google.com/p/google-safe-browsing/wiki/Protocolv2Spec.
|
| +void CanonicalizeUrl(const GURL& url, std::string* canonicalized_hostname,
|
| + std::string* canonicalized_path,
|
| + std::string* canonicalized_query);
|
| +
|
| +// Given a URL, returns all the hosts we need to check. They are returned
|
| +// in order of size (i.e. b.c is first, then a.b.c).
|
| +void GenerateHostsToCheck(const GURL& url, std::vector<std::string>* hosts);
|
| +
|
| +// Given a URL, returns all the paths we need to check.
|
| +void GeneratePathsToCheck(const GURL& url, std::vector<std::string>* paths);
|
| +
|
| +// Given a URL, returns all the patterns we need to check.
|
| +void GeneratePatternsToCheck(const GURL& url, std::vector<std::string>* urls);
|
| +
|
| +} // namespace safe_browsing
|
| +
|
| #endif // COMPONENTS_SAFE_BROWSING_DB_SAFE_BROWSING_DB_UTIL_H_
|
|
|