83 lines
2.6 KiB
Protocol Buffer
83 lines
2.6 KiB
Protocol Buffer
// NORMATIVE schema for the Skald Relay v2 transport.
|
|
// Mirror copy of data/iOS-app/v2/relay-protocol.md §2.
|
|
// Do NOT edit field numbers / names — clients and servers depend on byte
|
|
// compatibility.
|
|
|
|
syntax = "proto3";
|
|
|
|
package skald.relay.v2;
|
|
|
|
message RelayFrame {
|
|
oneof frame {
|
|
Challenge challenge = 1;
|
|
Auth auth = 2;
|
|
AuthOk auth_ok = 3;
|
|
AuthError auth_error = 4;
|
|
Authorize authorize = 5;
|
|
AuthorizeOk authorize_ok = 6;
|
|
PairingStart pairing_start = 7;
|
|
PairingReady pairing_ready = 8;
|
|
PairingStop pairing_stop = 9;
|
|
PairingStopOk pairing_stop_ok = 10;
|
|
ClientPaired client_paired = 11;
|
|
Message message = 12;
|
|
PeerOffline peer_offline = 13;
|
|
PresenceRequest presence_request = 14;
|
|
PresenceList presence_list = 15;
|
|
PresenceEvent presence_event = 16;
|
|
Error error = 17;
|
|
}
|
|
reserved 18, 19;
|
|
}
|
|
|
|
message Message {
|
|
bytes ciphertext = 1;
|
|
bytes nonce = 2;
|
|
bytes peer = 3;
|
|
bool live = 4;
|
|
}
|
|
message PeerOffline { bytes peer = 1; }
|
|
|
|
message PresenceRequest {}
|
|
message PresenceList { repeated bytes online = 1; }
|
|
message PresenceEvent { bytes pubkey = 1; Status status = 2; }
|
|
enum Status { STATUS_UNSPECIFIED = 0; STATUS_ONLINE = 1; STATUS_OFFLINE = 2; }
|
|
|
|
message Challenge { bytes nonce = 1; }
|
|
|
|
message Auth {
|
|
oneof role {
|
|
AuthAgent agent = 1;
|
|
AuthClient client = 2;
|
|
AuthPairing pairing = 3;
|
|
}
|
|
bytes signature = 4;
|
|
}
|
|
message AuthAgent { bytes agent_ed25519_pub = 1; }
|
|
message AuthClient {
|
|
bytes namespace_id = 1;
|
|
bytes client_ed25519_pub = 2;
|
|
string device_token = 3;
|
|
Platform platform = 4;
|
|
}
|
|
message AuthPairing {
|
|
bytes namespace_id = 1;
|
|
bytes client_ed25519_pub = 2;
|
|
bytes client_x25519_pub = 3;
|
|
bytes pairing_token = 4;
|
|
string device_token = 5;
|
|
Platform platform = 6;
|
|
}
|
|
enum Platform { PLATFORM_UNSPECIFIED = 0; PLATFORM_IOS = 1; PLATFORM_ANDROID = 2; }
|
|
|
|
message AuthOk { bytes namespace_id = 1; }
|
|
message AuthError { string code = 1; string message = 2; }
|
|
message Authorize { repeated bytes clients = 1; }
|
|
message AuthorizeOk { uint32 authorized = 1; }
|
|
message PairingStart { bytes pairing_token = 1; uint32 ttl = 2; }
|
|
message PairingReady { uint32 ttl = 1; }
|
|
message PairingStop {}
|
|
message PairingStopOk {}
|
|
message ClientPaired { bytes client_ed25519_pub = 1; bytes client_x25519_pub = 2; Platform platform = 3; }
|
|
message Error { string code = 1; string message = 2; }
|