Files
Skald-Circle/crates/skald-relay-common/proto/skald/relay/v2/relay_frame.proto
T
2026-07-10 15:02:09 +01:00

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; }