40 lines
1.6 KiB
Rust
40 lines
1.6 KiB
Rust
//! skald-relay-client — standalone agent-role relay client.
|
|
//!
|
|
//! Payload-agnostic: it speaks the v2 WebSocket protocol (challenge/auth,
|
|
//! `Authorize`, store-and-forward `Message`), performs E2E seal/open with
|
|
//! per-client AES-256-GCM keys, manages anti-replay counters, pairing windows,
|
|
//! and device authorization. It never interprets the decrypted bytes: it emits
|
|
//! them via [`events::RelayEvent`] and lets the application layer (the
|
|
//! `plugin-mobile-connector` crate) apply JSON semantics. See the
|
|
//! "Crate split" section of `docs/plugins/mobile-connector.md` and
|
|
//! `docs/relay/`.
|
|
//!
|
|
//! Module map:
|
|
//! - `config` — `RelayClientConfig` + `SeedSource`
|
|
//! - `events` — `RelayEvent` (broadcast)
|
|
//! - `identity` — seed + derived keys + namespace_id
|
|
//! - `db` — `relay_clients` table (devices + anti-replay counters)
|
|
//! - `pairing` — in-memory pairing sessions + QR payload
|
|
//! - `state` — `RelayState` (networking-only: seal/open, counters, send/recv)
|
|
//! - `ws` — the permanent reconnecting agent WebSocket (v2 binary)
|
|
//! - `pipe` — pipe data plane: `PipeConnection` + `IncomingPipe` (pipe.md)
|
|
//! - `client` — `RelayClient`, the public façade
|
|
|
|
pub mod client;
|
|
pub mod config;
|
|
pub mod db;
|
|
pub mod events;
|
|
pub mod identity;
|
|
pub mod pairing;
|
|
pub mod pipe;
|
|
mod state;
|
|
mod ws;
|
|
|
|
pub use client::RelayClient;
|
|
pub use config::{RelayClientConfig, SeedSource};
|
|
pub use db::{ClientRow, ClientState};
|
|
pub use events::RelayEvent;
|
|
pub use identity::Identity;
|
|
pub use pairing::{QrCodeData, SessionState, StartedPairing};
|
|
pub use pipe::{IncomingPipe, PipeConnection, PipeReceiver, PipeRole, PipeSender};
|