| Index: chrome/browser/autofill/risk/proto/fingerprint.proto
|
| diff --git a/chrome/browser/autofill/risk/proto/fingerprint.proto b/chrome/browser/autofill/risk/proto/fingerprint.proto
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7523a5eb69197ff826823aa3430e515502c150ae
|
| --- /dev/null
|
| +++ b/chrome/browser/autofill/risk/proto/fingerprint.proto
|
| @@ -0,0 +1,219 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +//
|
| +// This file contains the definition of protocol buffers for native browser
|
| +// fingerprinting.
|
| +
|
| +syntax = "proto2";
|
| +
|
| +option optimize_for = LITE_RUNTIME;
|
| +
|
| +package autofill.risk;
|
| +
|
| +message Fingerprint {
|
| + // A simple protocol message to represent objects with width and height.
|
| + message Dimension {
|
| + optional int32 width = 1;
|
| + optional int32 height = 2;
|
| + }
|
| +
|
| + // Characteristics of the user's machine that are relatively durable,
|
| + // i.e. that are expected to change relatively infrequently.
|
| + message MachineCharacteristics {
|
| + // A simple protocol message that represents a plugin.
|
| + // e.g. flash, shockwave, acrobat reader, gears, picasa
|
| + message Plugin {
|
| + optional string name = 1;
|
| + optional string description = 2;
|
| + repeated string mime_type = 3;
|
| + optional string version = 4;
|
| + }
|
| +
|
| + // Information on the CPU.
|
| + message Cpu {
|
| + // e.g. "GenuineIntel"
|
| + optional string vendor_name = 1;
|
| + // e.g. "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\000"
|
| + optional string brand = 2;
|
| + }
|
| +
|
| + // Information on the GPU.
|
| + message Graphics {
|
| + // The GPU manufacturer's vendor id.
|
| + optional uint32 vendor_id = 1;
|
| +
|
| + // The GPU manufacturer's device id for the chip set.
|
| + optional uint32 device_id = 2;
|
| +
|
| + // The driver version on the GPU.
|
| + optional string driver_version = 3;
|
| +
|
| + // The driver date on the GPU.
|
| + optional string driver_date = 4;
|
| +
|
| + // The GPU performance statistics.
|
| + message PerformanceStatistics {
|
| + optional float graphics_score = 1;
|
| + optional float gaming_score = 2;
|
| + optional float overall_score = 3;
|
| + }
|
| + optional PerformanceStatistics performance_statistics = 5;
|
| + }
|
| +
|
| + // Username currently logged into computer / device.
|
| + // TODO(isherman): This seems like TMI.
|
| + optional string user_name = 1;
|
| +
|
| + // Build version string for the current operating system.
|
| + optional string operating_system_build = 2;
|
| +
|
| + // e.g. User-assigned computer name.
|
| + // TODO(isherman): This seems like TMI.
|
| + optional string device_name = 3;
|
| +
|
| + // Browser install time (ms since epoch).
|
| + // TODO(isherman): This might be TMI.
|
| + optional int64 browser_install_time_ms = 4;
|
| +
|
| + // Fonts installed on the machine.
|
| + repeated string font = 5;
|
| +
|
| + // Plug-ins installed on the machine.
|
| + repeated Plugin plugin = 6;
|
| +
|
| + // Delta in ms of the device's time zone from UTC.
|
| + optional int64 utc_offset_ms = 7;
|
| +
|
| + // IETF-formatted language tag. e.g. "en", "en-US", "es-419", etc.
|
| + // http://en.wikipedia.org/wiki/IETF_language_tag
|
| + optional string browser_language = 8;
|
| +
|
| + // User-requested language code of viewed sites. Languages in
|
| + // accept-languages.
|
| + repeated string requested_language = 9;
|
| +
|
| + // Default charset of the browser. (e.g. ISO-8859-1, obtained from
|
| + // document.defaultCharset)
|
| + optional string charset = 10;
|
| +
|
| + // The number of physical screens.
|
| + optional int32 screen_count = 11;
|
| +
|
| + // Information about the user's monitor's physical screen size.
|
| + // (e.g. 1024 x 768)
|
| + optional Dimension screen_size = 12;
|
| +
|
| + // The color depth of the user's screen (obtained from screen.colorDepth
|
| + // or screen.pixelDepth)
|
| + optional int32 screen_color_depth = 13;
|
| +
|
| + // Information about the size of the portion of the screen that is unusable
|
| + // to a program (i.e. on Windows, the portion of the screen that is taken
|
| + // up by the taskbar)
|
| + optional Dimension unavailable_screen_size = 14;
|
| +
|
| + optional string user_agent = 15;
|
| +
|
| + // Total size of each hard drive partition.
|
| + repeated int32 partition_size = 16;
|
| +
|
| + optional Cpu cpu = 17;
|
| +
|
| + // Total RAM in bytes.
|
| + optional int64 ram = 18;
|
| +
|
| + // Graphics card being used.
|
| + optional Graphics graphics_card = 19;
|
| +
|
| + // Build version string for browser.
|
| + optional string browser_build = 20;
|
| +
|
| + }
|
| +
|
| + // Contains properties relating to more transient computer / browser state.
|
| + message TransientState {
|
| + // Corresponds to window.innerWidth / innertHeight
|
| + optional Dimension inner_window_size = 1;
|
| +
|
| + // Corresponds to window.outerWidth / outerHeight
|
| + optional Dimension outer_window_size = 2;
|
| + }
|
| +
|
| + // Measures computer / network performance.
|
| + message Performance {
|
| + // Bandwidth in MB/s. network.connection.bandwidth
|
| + optional float bandwidth = 1;
|
| + // Whether bandwidth cost is metered. network.connection.metered
|
| + optional bool metered = 2;
|
| + // Whether it's wifi, 3g, 2g, etc. network.connection.type
|
| + optional string network_type = 3;
|
| + }
|
| +
|
| + // Properties describing the user -- especially the user's state in the
|
| + // physical world.
|
| + message UserCharacteristics {
|
| + message Vector {
|
| + optional int32 x = 1;
|
| + optional int32 y = 2;
|
| + optional int32 z = 3;
|
| + }
|
| +
|
| + message Location {
|
| + // Meters above sea level.
|
| + optional double altitude = 1;
|
| + // Latitude in degrees.
|
| + optional double latitude = 2;
|
| + // Longitude in degrees.
|
| + optional double longitude = 3;
|
| + // Accuracy in meters. 95% probability of being in this radius of
|
| + // lat / long.
|
| + optional float accuracy = 4;
|
| + // Milliseconds since epoch since measurement.
|
| + optional double time_in_ms = 5;
|
| + }
|
| +
|
| + // Average force by finger presses. TouchEvent.force
|
| + optional float force = 1;
|
| + // Average finger width. TouchEvent.radiusX
|
| + optional float touch_width = 2;
|
| + // Average finger height. TouchEvent.radiusY
|
| + optional float touch_height = 3;
|
| + // TouchEvent.rotationAngle
|
| + optional int32 touch_rotation = 4;
|
| + // Orientation while user is navigating flow and the device is roughly
|
| + // stable. x for alpha, y for beta, z for gamma
|
| + // TODO(isherman): Orientation data is only available asynchronously in
|
| + // Chrome.
|
| + optional Vector device_orientation = 5;
|
| + // Acceleration while measuring orientation.
|
| + // TODO(isherman): Acceleration data is not available in Chrome.
|
| + optional Vector device_acceleration = 6;
|
| + optional Location location = 7;
|
| + }
|
| +
|
| + // Metadata associated with data collection or the user that doesn't actually
|
| + // fingerprint the device.
|
| + message Metadata {
|
| + // When this data was collected / received, in milliseconds since the epoch.
|
| + optional int64 timestamp_ms = 1;
|
| + // Gaia id associated with transaction.
|
| + optional int64 gaia_id = 2;
|
| + // Version of the native library generating this proto.
|
| + // This may be manually bumped when the code populating the proto has
|
| + // significantly changed.
|
| + optional int32 fingerprinter_version = 3;
|
| + }
|
| +
|
| + // Computer / browser fingerprint.
|
| + optional MachineCharacteristics machine_characteristics = 1;
|
| +
|
| + optional Performance performance = 2;
|
| +
|
| + optional UserCharacteristics user_characteristics = 3;
|
| +
|
| + optional TransientState transient_state = 4;
|
| +
|
| + // Metadata associated with data collection.
|
| + optional Metadata metadata = 5;
|
| +}
|
|
|