package v1sync

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

service BackrestSyncService

syncservice.proto:21

BackrestSyncService provides methods to sync data between backrest instances. This service provides its own authentication and authorization.

service BackrestSyncStateService

syncservice.proto:27

BackrestSyncStateService provides methods to query the sync state of known hosts and clients. This service should be served behind authentication and authorization.

message AuthenticateRequest

syncservice.proto:51

message AuthorizationToken

syncservice.proto:116

enum ConnectionState

syncservice.proto:81

Used in: PeerState

message GetOperationMetadataResponse

syncservice.proto:55

message LogDataEntry

syncservice.proto:60

message PlanMetadata

syncservice.proto:77

Used in: PeerState, SetAvailableResourcesRequest, SyncStreamItem.SyncActionReceiveResources

message RemoteConfig

syncservice.proto:109

Used in: PeerState, SyncStreamItem.SyncActionReceiveConfig

message RepoMetadata

syncservice.proto:72

Used in: PeerState, SetAvailableResourcesRequest, SyncStreamItem.SyncActionReceiveResources

message SetAvailableResourcesRequest

syncservice.proto:67

message SetConfigRequest

syncservice.proto:92

enum SyncStreamItem.RepoConnectionState

syncservice.proto:209

message SyncStreamItem.SyncActionConnectRepo

syncservice.proto:205

message SyncStreamItem.SyncActionEncrypted

syncservice.proto:179

SyncActionEncrypted wraps an encrypted SyncStreamItem. After the post-quantum KEM handshake, all subsequent messages are sent inside this envelope.

Used in: SyncStreamItem

message SyncStreamItem.SyncActionHandshake

syncservice.proto:168

SyncActionHandshake is the first message sent by each peer over the post-quantum encrypted channel. It carries the sender's long-term ed25519 identity, its instance ID, and a single signature that binds the identity to *this* transport session. The signature covers a domain-separated hash of: "backrest-sync-handshake/v1\x00" || protocol_version (8 bytes BE) || LP(instance_id) || LP(pairing_secret) || LP(transport transcript) where LP(x) = 4-byte BE length prefix || x, and the transport transcript is cryptoutil.TransportSession.Transcript() — a hash that commits to the ephemeral KEM messages of this connection. The transcript binding is what defeats a MITM that completes a separate KEM with each side: each leg has a different transcript, and the legitimate peer's signature only commits to its own transcript, so the attacker cannot forward a usable signature to either side. Receivers MUST recompute the transcript locally from their TransportSession and reject the handshake if the signature does not verify against public_key. There is no timestamp because freshness is provided by the ephemeral KEM, not by clock comparison.

Used in: SyncStreamItem

message SyncStreamItem.SyncActionHeartbeat

syncservice.proto:185

SyncActionHeartbeat is sent periodically to keep the connection alive.

Used in: SyncStreamItem

(message has no fields)

message SyncStreamItem.SyncActionOperationManifest

syncservice.proto:217

Used in: SyncStreamItem

message SyncStreamItem.SyncActionReceiveConfig

syncservice.proto:187

Used in: SyncStreamItem

message SyncStreamItem.SyncActionReceiveLogData

syncservice.proto:234

Used in: SyncStreamItem

message SyncStreamItem.SyncActionReceiveOperations

syncservice.proto:226

Used in: SyncStreamItem

message SyncStreamItem.SyncActionReceiveResources

syncservice.proto:200

Used in: SyncStreamItem

message SyncStreamItem.SyncActionRequestLog

syncservice.proto:230

Used in: SyncStreamItem

message SyncStreamItem.SyncActionRequestOperationData

syncservice.proto:222

Used in: SyncStreamItem

message SyncStreamItem.SyncActionRequestResources

syncservice.proto:198

Used in: SyncStreamItem

(message has no fields)

message SyncStreamItem.SyncActionSetConfig

syncservice.proto:191

Used in: SyncStreamItem

message SyncStreamItem.SyncActionThrottle

syncservice.proto:248

Used in: SyncStreamItem

message SyncStreamItem.SyncEstablishSharedSecret

syncservice.proto:262

SyncEstablishSharedSecret is exchanged immediately after the connection is opened. The initiator (client) sends kem_public_key. The responder (server) replies with kem_encapsulation. Both sides then derive a shared AES-256-GCM session key via the HPKE Export interface. All subsequent messages must be wrapped in SyncActionEncrypted. The KEM is the post-quantum hybrid ML-KEM-1024 + ECDH-P384 (HPKE ciphersuite ML-KEM-1024-P384 / KEM ID 0x0050, RFC 9180 + the IETF hybrid KEM drafts). KDF is HKDF-SHA256, AEAD is AES-256-GCM. Peers must use protocol_version=1; mismatched versions abort the connection.

Used in: SyncStreamItem