Use SQLite for persistence and generate Rust protobuf bindings at build time. Add Docker image support for containerized deployment. Co-Authored-By: codex <[email protected]>
135 lines
4.3 KiB
Protocol Buffer
135 lines
4.3 KiB
Protocol Buffer
// Copyright 2023 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
syntax = "proto2";
|
|
|
|
option go_package = "./sync_pb";
|
|
|
|
option java_multiple_files = true;
|
|
option java_package = "org.chromium.components.sync.protocol";
|
|
|
|
option optimize_for = LITE_RUNTIME;
|
|
|
|
package sync_pb;
|
|
|
|
import "nigori_specifics.proto";
|
|
|
|
message PasswordSharingInvitationData {
|
|
// Contains password fields required for sending. See PasswordSpecificsData
|
|
// for field descriptions.
|
|
message PasswordGroupElementData {
|
|
// See PasswordSpecificsData::Scheme for values.
|
|
optional int32 scheme = 2;
|
|
optional string signon_realm = 3;
|
|
optional string origin = 4;
|
|
optional string username_element = 5;
|
|
optional string password_element = 7;
|
|
optional string display_name = 8;
|
|
optional string avatar_url = 9;
|
|
}
|
|
|
|
message PasswordGroupData {
|
|
optional string username_value = 1;
|
|
optional string password_value = 2;
|
|
repeated PasswordGroupElementData element_data = 3;
|
|
}
|
|
|
|
reserved 1;
|
|
|
|
optional PasswordGroupData password_group_data = 2;
|
|
}
|
|
|
|
// Contains user profile information.
|
|
message UserDisplayInfo {
|
|
// Primary email address of the user.
|
|
optional string email = 1;
|
|
|
|
// The user's full name.
|
|
optional string display_name = 2;
|
|
|
|
// Portrait photo of the user.
|
|
optional string profile_image_url = 3;
|
|
}
|
|
|
|
message UserInfo {
|
|
// Obfuscated Gaia ID.
|
|
optional string user_id = 1;
|
|
|
|
optional UserDisplayInfo user_display_info = 2;
|
|
|
|
// Latest user's public key registered on the server.
|
|
optional CrossUserSharingPublicKey cross_user_sharing_public_key = 3;
|
|
}
|
|
|
|
// Incoming invitations for password sending.
|
|
message IncomingPasswordSharingInvitationSpecifics {
|
|
// Unique client tag for the invitation. This does *not* have to be the same
|
|
// GUID as for the outgoing invitation.
|
|
optional string guid = 1;
|
|
|
|
// Profile information about the sender of the password. Sender's public key
|
|
// is used to authenticate the sender for `encrypted_key_for_recipient`.
|
|
optional UserInfo sender_info = 2;
|
|
|
|
// Encrypted PasswordSharingInvitationData using recipient's public key
|
|
// corresponding to `recipient_key_version` and sender's private key to
|
|
// authenticate the sender, see https://www.rfc-editor.org/rfc/rfc9180.html.
|
|
optional bytes encrypted_password_sharing_invitation_data = 3;
|
|
|
|
// An unsynced field for use internally on the client. This field should
|
|
// never be set in any network-based communications because it contains
|
|
// unencrypted material.
|
|
optional PasswordSharingInvitationData client_only_unencrypted_data = 4;
|
|
|
|
optional uint32 recipient_key_version = 6;
|
|
|
|
reserved 5;
|
|
}
|
|
|
|
// Outgoing invitations for password sending.
|
|
message OutgoingPasswordSharingInvitationSpecifics {
|
|
// Unique client tag for the invitation, generated by the client.
|
|
optional string guid = 1;
|
|
|
|
// Recipient's user identifier (obfuscated Gaia ID).
|
|
optional string recipient_user_id = 2;
|
|
|
|
// Encrypted PasswordSharingInvitationData using recipient's public key
|
|
// corresponding to `recipient_key_version` and sender's private key to
|
|
// authenticate the sender, see https://www.rfc-editor.org/rfc/rfc9180.html.
|
|
optional bytes encrypted_password_sharing_invitation_data = 3;
|
|
|
|
// An unsynced field for use internally on the client. This field should
|
|
// never be set in any network-based communications because it contains
|
|
// unencrypted material.
|
|
optional PasswordSharingInvitationData client_only_unencrypted_data = 4;
|
|
|
|
optional uint32 recipient_key_version = 6;
|
|
|
|
// Version of Public key of the sender which is used to authenticate the
|
|
// sender of the password. Must be equal to the latest committed version.
|
|
optional uint32 sender_key_version = 7;
|
|
|
|
reserved 5;
|
|
}
|
|
|
|
// Used for the server to return fine-grained commit errors back to the client.
|
|
message OutgoingPasswordSharingInvitationCommitError {
|
|
// This enum is used in histograms. Entries should not be renumbered and
|
|
// numeric values should never be reused. Also remember to update in
|
|
// tools/metrics/histograms/enums.xml.
|
|
enum ErrorCode {
|
|
UNKNOWN = 0;
|
|
|
|
// Sender's public key version is different on the server.
|
|
PUBLIC_KEY_VERSION_MISMATCH = 1;
|
|
|
|
// The sender and the recipient are not in the same family according to the
|
|
// Google family service.
|
|
NOT_FAMILY_MEMBER = 2;
|
|
}
|
|
|
|
optional ErrorCode error_code = 1;
|
|
}
|