Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / sync / protocol / password_specifics.proto
blob7f2707249a4bdf7602a511ac6c0fea1038bd6bf3
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 // Sync protocol datatype extension for password data.
7 // Update proto_value_conversions{.h,.cc,_unittest.cc} if you change
8 // any fields in this file.
10 syntax = "proto2";
12 option optimize_for = LITE_RUNTIME;
13 option retain_unknown_fields = true;
15 package sync_pb;
17 import "encryption.proto";
19 // These are the properties that get serialized into the |encrypted| field of
20 // PasswordSpecifics. They correspond to fields in autofill::PasswordForm.
22 // Sync unique tag is calculated as
23 // EscapePath(origin) + "|" +
24 // EscapePath(username_element) + "|" +
25 // EscapePath(username_value) + "|" +
26 // EscapePath(password_element) + "|" +
27 // EscapePath(signon_realm)
28 // where '+' is the string concatenation operation. EscapePath escapes a partial
29 // or complete file/pathname. This includes non-printable, non-7bit, and
30 // (including space) the following characters ' "#%:<>?[\]^`{|}'. The space
31 // character is encoded as '%20'.
33 // All the strings are encoded with UTF-8. URLs are encoded in Punycode.
34 message PasswordSpecificsData {
35   // SCHEME_HTML(0), the credential represents either a parsed HTML form, or an
36   // android credential or a password saved through Credential Manager API
37   // (https://w3c.github.io/webappsec/specs/credentialmanagement/).
38   // SCHEME_BASIC(1), basic access http authentication.
39   // SCHEME_DIGEST(2), digest access authentication.
40   // SCHEME_OTHER(3), another access authentication.
41   optional int32 scheme = 1;
43   // For parsed web forms and normal passwords saved through Credential Manager
44   // API: url-scheme://url-host[:url-port]/
45   // For Android apps (local + federated):
46   //     "android://<hash of cert>@<package name>"
47   // where the hash is base64 encoded SHA512 of the app's public certificate.
48   // For federated credentials:
49   //     "federation://" + origin_host + "/" + federation_host
50   // For proxy auth: proxy-host/auth-realm
51   // For HTTP auth: url-scheme://url-host[:url-port]/auth-realm
52   optional string signon_realm = 2;
54   // For parsed web forms and Credential Manager API:
55   //     url-scheme://url-host[:url-port]/path
56   // For Android: <empty>.
57   // For proxy/HTTP auth: url-scheme://url-host[:url-port]/path
58   optional string origin = 3;
60   // Only for web-parsed forms - the action target of the form:
61   //     url-scheme://url-host[:url-port]/path
62   optional string action = 4;
64   // Only for web-parsed forms - the name of the element containing username.
65   optional string username_element = 5;
67   // For all: the username.
68   // For blacklisted forms: <empty>.
69   optional string username_value = 6;
71   // Only for web-parsed forms - the name of the element containing password.
72   optional string password_element = 7;
74   // For all: the password.
75   // For federated logins and blacklisted forms: <empty>
76   optional string password_value = 8;
78   // True if the credential was saved for a HTTPS session with a valid SSL cert.
79   // Ignored for Android apps.
80   // Note: likely getting deprecated: http://crbug.com/413020
81   optional bool ssl_valid = 9;
83   // True for the last credential used for logging in on a given site.
84   optional bool preferred = 10;
86   // Time when the credential was created. Amount of microseconds since 1601.
87   optional int64 date_created = 11;
89   // True, if user chose permanently not to save the credentials for the form.
90   optional bool blacklisted = 12;
92   // TYPE_MANUAL(0), user manually filled the username and the password.
93   // TYPE_GENERATED(1), the credential was auto generated.
94   optional int32 type = 13;
96   // Number of times this login was used for logging in. Chrome uses this field
97   // to distinguish log-in and sign-up forms.
98   optional int32 times_used = 14;
100   // A human readable name of the account holder. Set by CredentialManager API
101   // and Android.
102   optional string display_name = 15;
104   // A URL of the avatar for the credential. Set by CredentialManager API and
105   // Android.
106   optional string avatar_url = 16;
108   // A URL of the IdP used to verify the credential. Set by Credential Manager
109   // API and Android.
110   optional string federation_url = 17;
113 // Properties of password sync objects.
114 message PasswordSpecifics {
115   // The actual password data. Contains an encrypted PasswordSpecificsData
116   // message.
117   optional EncryptedData encrypted = 1;
118   // An unsynced field for use internally on the client. This field should
119   // never be set in any network-based communications.
120   optional PasswordSpecificsData client_only_encrypted_data = 2;