| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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 // Utilities for the SafeBrowsing DB code. | 5 // Utilities for the SafeBrowsing DB code. |
| 6 | 6 |
| 7 #ifndef COMPONENTS_SAFE_BROWSING_DB_UTIL_H_ | 7 #ifndef COMPONENTS_SAFE_BROWSING_DB_UTIL_H_ |
| 8 #define COMPONENTS_SAFE_BROWSING_DB_UTIL_H_ | 8 #define COMPONENTS_SAFE_BROWSING_DB_UTIL_H_ |
| 9 | 9 |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 | 46 |
| 47 // Url detected by the client-side malware IP list. This IP list is part | 47 // Url detected by the client-side malware IP list. This IP list is part |
| 48 // of the client side detection model. | 48 // of the client side detection model. |
| 49 SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL, | 49 SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL, |
| 50 | 50 |
| 51 // Url leads to a blacklisted resource script. Note that no warnings should be | 51 // Url leads to a blacklisted resource script. Note that no warnings should be |
| 52 // shown on this threat type, but an incident report might be sent. | 52 // shown on this threat type, but an incident report might be sent. |
| 53 SB_THREAT_TYPE_BLACKLISTED_RESOURCE, | 53 SB_THREAT_TYPE_BLACKLISTED_RESOURCE, |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 // Metadata that indicates what kind of URL match this is. |
| 57 enum class ThreatPatternType { |
| 58 NONE, // Pattern type didn't appear in the metadata |
| 59 LANDING, // The match is a landing page |
| 60 DISTRIBUTION, // The match is a distribution page |
| 61 }; |
| 62 |
| 63 // Metadata that was returned by a GetFullHash call. This is the parsed version |
| 64 // of the PB (from Pver3, or Pver4 local) or JSON (from Pver4 via GMSCore). |
| 65 // Some fields are only applicable to certain lists. |
| 66 struct ThreatMetadata { |
| 67 ThreatMetadata(); |
| 68 ~ThreatMetadata(); |
| 69 |
| 70 // Type of blacklisted page. Used on malware and UwS lists. |
| 71 // This will be NONE if it wasn't present in the reponse. |
| 72 ThreatPatternType threat_pattern_type; |
| 73 |
| 74 // List of permissions blocked. Used with threat_type API_ABUSE. |
| 75 // This will be empty if it wasn't present in the response. |
| 76 std::vector<std::string> api_permissions; |
| 77 |
| 78 // Opaque base64 string used for user-population experiments in pver4. |
| 79 // This will be empty if it wasn't present in the response. |
| 80 std::string population_id; |
| 81 |
| 82 // This is the only field currently populated, and it'll be removed |
| 83 // when the others are used. |
| 84 // TODO(nparker): Remove this as part of crbug/589610. |
| 85 std::string raw_metadata; |
| 86 }; |
| 56 | 87 |
| 57 // A truncated hash's type. | 88 // A truncated hash's type. |
| 58 typedef uint32_t SBPrefix; | 89 typedef uint32_t SBPrefix; |
| 59 | 90 |
| 60 // A full hash. | 91 // A full hash. |
| 61 union SBFullHash { | 92 union SBFullHash { |
| 62 char full_hash[32]; | 93 char full_hash[32]; |
| 63 SBPrefix prefix; | 94 SBPrefix prefix; |
| 64 }; | 95 }; |
| 65 | 96 |
| 66 // Used when we get a gethash response. | 97 // Used when we get a gethash response. |
| 67 struct SBFullHashResult { | 98 struct SBFullHashResult { |
| 68 SBFullHash hash; | 99 SBFullHash hash; |
| 69 // TODO(shess): Refactor to allow ListType here. | 100 // TODO(shess): Refactor to allow ListType here. |
| 70 int list_id; | 101 int list_id; |
| 71 std::string metadata; | 102 ThreatMetadata metadata; |
| 72 // Used only for V4 results. The cache lifetime for this result. The response | 103 // Used only for V4 results. The cache lifetime for this result. The response |
| 73 // must not be cached for more than this duration to avoid false positives. | 104 // must not be cached for more than this duration to avoid false positives. |
| 74 base::TimeDelta cache_duration; | 105 base::TimeDelta cache_duration; |
| 75 }; | 106 }; |
| 76 | 107 |
| 77 // Caches individual response from GETHASH request. | 108 // Caches individual response from GETHASH request. |
| 78 struct SBCachedFullHashResult { | 109 struct SBCachedFullHashResult { |
| 79 SBCachedFullHashResult(); | 110 SBCachedFullHashResult(); |
| 80 explicit SBCachedFullHashResult(const base::Time& in_expire_after); | 111 explicit SBCachedFullHashResult(const base::Time& in_expire_after); |
| 81 SBCachedFullHashResult(const SBCachedFullHashResult& other); | 112 SBCachedFullHashResult(const SBCachedFullHashResult& other); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 | 210 |
| 180 // Given a URL, returns all the paths we need to check. | 211 // Given a URL, returns all the paths we need to check. |
| 181 void GeneratePathsToCheck(const GURL& url, std::vector<std::string>* paths); | 212 void GeneratePathsToCheck(const GURL& url, std::vector<std::string>* paths); |
| 182 | 213 |
| 183 // Given a URL, returns all the patterns we need to check. | 214 // Given a URL, returns all the patterns we need to check. |
| 184 void GeneratePatternsToCheck(const GURL& url, std::vector<std::string>* urls); | 215 void GeneratePatternsToCheck(const GURL& url, std::vector<std::string>* urls); |
| 185 | 216 |
| 186 } // namespace safe_browsing | 217 } // namespace safe_browsing |
| 187 | 218 |
| 188 #endif // COMPONENTS_SAFE_BROWSING_DB_UTIL_H_ | 219 #endif // COMPONENTS_SAFE_BROWSING_DB_UTIL_H_ |
| OLD | NEW |