| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 // |
| 5 // This file contains the definition of protocol buffers for native browser |
| 6 // fingerprinting. |
| 7 |
| 8 syntax = "proto2"; |
| 9 |
| 10 option optimize_for = LITE_RUNTIME; |
| 11 |
| 12 package autofill.risk; |
| 13 |
| 14 message Fingerprint { |
| 15 // A simple protocol message to represent objects with width and height. |
| 16 message Dimension { |
| 17 optional int32 width = 1; |
| 18 optional int32 height = 2; |
| 19 } |
| 20 |
| 21 // Characteristics of the user's machine that are relatively durable, |
| 22 // i.e. that are expected to change relatively infrequently. |
| 23 message MachineCharacteristics { |
| 24 // A simple protocol message that represents a plugin. |
| 25 // e.g. flash, shockwave, acrobat reader, gears, picasa |
| 26 message Plugin { |
| 27 optional string name = 1; |
| 28 optional string description = 2; |
| 29 repeated string mime_type = 3; |
| 30 optional string version = 4; |
| 31 } |
| 32 |
| 33 // Information on the CPU. |
| 34 message Cpu { |
| 35 // e.g. "GenuineIntel" |
| 36 optional string vendor_name = 1; |
| 37 // e.g. "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\000" |
| 38 optional string brand = 2; |
| 39 } |
| 40 |
| 41 // Information on the GPU. |
| 42 message Graphics { |
| 43 // The GPU manufacturer's vendor id. |
| 44 optional uint32 vendor_id = 1; |
| 45 |
| 46 // The GPU manufacturer's device id for the chip set. |
| 47 optional uint32 device_id = 2; |
| 48 |
| 49 // The driver version on the GPU. |
| 50 optional string driver_version = 3; |
| 51 |
| 52 // The driver date on the GPU. |
| 53 optional string driver_date = 4; |
| 54 |
| 55 // The GPU performance statistics. |
| 56 message PerformanceStatistics { |
| 57 optional float graphics_score = 1; |
| 58 optional float gaming_score = 2; |
| 59 optional float overall_score = 3; |
| 60 } |
| 61 optional PerformanceStatistics performance_statistics = 5; |
| 62 } |
| 63 |
| 64 // Username currently logged into computer / device. |
| 65 // TODO(isherman): This seems like TMI. |
| 66 optional string user_name = 1; |
| 67 |
| 68 // Build version string for the current operating system. |
| 69 optional string operating_system_build = 2; |
| 70 |
| 71 // e.g. User-assigned computer name. |
| 72 // TODO(isherman): This seems like TMI. |
| 73 optional string device_name = 3; |
| 74 |
| 75 // Browser install time (ms since epoch). |
| 76 // TODO(isherman): This might be TMI. |
| 77 optional int64 browser_install_time_ms = 4; |
| 78 |
| 79 // Fonts installed on the machine. |
| 80 repeated string font = 5; |
| 81 |
| 82 // Plug-ins installed on the machine. |
| 83 repeated Plugin plugin = 6; |
| 84 |
| 85 // Delta in ms of the device's time zone from UTC. |
| 86 optional int64 utc_offset_ms = 7; |
| 87 |
| 88 // IETF-formatted language tag. e.g. "en", "en-US", "es-419", etc. |
| 89 // http://en.wikipedia.org/wiki/IETF_language_tag |
| 90 optional string browser_language = 8; |
| 91 |
| 92 // User-requested language code of viewed sites. Languages in |
| 93 // accept-languages. |
| 94 repeated string requested_language = 9; |
| 95 |
| 96 // Default charset of the browser. (e.g. ISO-8859-1, obtained from |
| 97 // document.defaultCharset) |
| 98 optional string charset = 10; |
| 99 |
| 100 // The number of physical screens. |
| 101 optional int32 screen_count = 11; |
| 102 |
| 103 // Information about the user's monitor's physical screen size. |
| 104 // (e.g. 1024 x 768) |
| 105 optional Dimension screen_size = 12; |
| 106 |
| 107 // The color depth of the user's screen (obtained from screen.colorDepth |
| 108 // or screen.pixelDepth) |
| 109 optional int32 screen_color_depth = 13; |
| 110 |
| 111 // Information about the size of the portion of the screen that is unusable |
| 112 // to a program (i.e. on Windows, the portion of the screen that is taken |
| 113 // up by the taskbar) |
| 114 optional Dimension unavailable_screen_size = 14; |
| 115 |
| 116 optional string user_agent = 15; |
| 117 |
| 118 // Total size of each hard drive partition. |
| 119 repeated int32 partition_size = 16; |
| 120 |
| 121 optional Cpu cpu = 17; |
| 122 |
| 123 // Total RAM in bytes. |
| 124 optional int64 ram = 18; |
| 125 |
| 126 // Graphics card being used. |
| 127 optional Graphics graphics_card = 19; |
| 128 |
| 129 // Build version string for browser. |
| 130 optional string browser_build = 20; |
| 131 |
| 132 } |
| 133 |
| 134 // Contains properties relating to more transient computer / browser state. |
| 135 message TransientState { |
| 136 // Corresponds to window.innerWidth / innertHeight |
| 137 optional Dimension inner_window_size = 1; |
| 138 |
| 139 // Corresponds to window.outerWidth / outerHeight |
| 140 optional Dimension outer_window_size = 2; |
| 141 } |
| 142 |
| 143 // Measures computer / network performance. |
| 144 message Performance { |
| 145 // Bandwidth in MB/s. network.connection.bandwidth |
| 146 optional float bandwidth = 1; |
| 147 // Whether bandwidth cost is metered. network.connection.metered |
| 148 optional bool metered = 2; |
| 149 // Whether it's wifi, 3g, 2g, etc. network.connection.type |
| 150 optional string network_type = 3; |
| 151 } |
| 152 |
| 153 // Properties describing the user -- especially the user's state in the |
| 154 // physical world. |
| 155 message UserCharacteristics { |
| 156 message Vector { |
| 157 optional int32 x = 1; |
| 158 optional int32 y = 2; |
| 159 optional int32 z = 3; |
| 160 } |
| 161 |
| 162 message Location { |
| 163 // Meters above sea level. |
| 164 optional double altitude = 1; |
| 165 // Latitude in degrees. |
| 166 optional double latitude = 2; |
| 167 // Longitude in degrees. |
| 168 optional double longitude = 3; |
| 169 // Accuracy in meters. 95% probability of being in this radius of |
| 170 // lat / long. |
| 171 optional float accuracy = 4; |
| 172 // Milliseconds since epoch since measurement. |
| 173 optional double time_in_ms = 5; |
| 174 } |
| 175 |
| 176 // Average force by finger presses. TouchEvent.force |
| 177 optional float force = 1; |
| 178 // Average finger width. TouchEvent.radiusX |
| 179 optional float touch_width = 2; |
| 180 // Average finger height. TouchEvent.radiusY |
| 181 optional float touch_height = 3; |
| 182 // TouchEvent.rotationAngle |
| 183 optional int32 touch_rotation = 4; |
| 184 // Orientation while user is navigating flow and the device is roughly |
| 185 // stable. x for alpha, y for beta, z for gamma |
| 186 // TODO(isherman): Orientation data is only available asynchronously in |
| 187 // Chrome. |
| 188 optional Vector device_orientation = 5; |
| 189 // Acceleration while measuring orientation. |
| 190 // TODO(isherman): Acceleration data is not available in Chrome. |
| 191 optional Vector device_acceleration = 6; |
| 192 optional Location location = 7; |
| 193 } |
| 194 |
| 195 // Metadata associated with data collection or the user that doesn't actually |
| 196 // fingerprint the device. |
| 197 message Metadata { |
| 198 // When this data was collected / received, in milliseconds since the epoch. |
| 199 optional int64 timestamp_ms = 1; |
| 200 // Gaia id associated with transaction. |
| 201 optional int64 gaia_id = 2; |
| 202 // Version of the native library generating this proto. |
| 203 // This may be manually bumped when the code populating the proto has |
| 204 // significantly changed. |
| 205 optional int32 fingerprinter_version = 3; |
| 206 } |
| 207 |
| 208 // Computer / browser fingerprint. |
| 209 optional MachineCharacteristics machine_characteristics = 1; |
| 210 |
| 211 optional Performance performance = 2; |
| 212 |
| 213 optional UserCharacteristics user_characteristics = 3; |
| 214 |
| 215 optional TransientState transient_state = 4; |
| 216 |
| 217 // Metadata associated with data collection. |
| 218 optional Metadata metadata = 5; |
| 219 } |
| OLD | NEW |