Skip to main content

Crate huddle_protocol

Crate huddle_protocol 

Source
Expand description

§huddle-protocol

The Huddle wire protocol and the pure cryptographic constructions it rests on, extracted into one runtime-free crate so both the client (huddle-core) and the relay (huddle-server) speak from a single source of truth — “the spec, as code.”

This crate depends ONLY on RustCrypto-family + serde crates: no tokio, libp2p, rusqlite, or vodozemac. Anything needing a runtime — the Megolm group ratchet with its SQLCipher persistence, the libp2p identity wrapper, transports, storage — stays in huddle-core, which re-exports the items here at their original module paths so existing call sites are unchanged.

Wire compatibility is a hard invariant: every type here serializes byte-for-byte as it did before extraction (1.x / 2.x peers and relays are unaffected). New optional fields use #[serde(default, skip_serializing_if = "...")] so they stay off the wire when unset.

Re-exports§

pub use error::ProtocolError;
pub use error::Result;
pub use identity::compute_fingerprint;
pub use identity::relay_auth_msg;
pub use identity::safety_code;
pub use identity::IdentityKeys;
pub use identity::RELAY_AUTH_DOMAIN;
pub use protocol::EncryptedFileMeta;
pub use protocol::RoomAnnouncement;
pub use protocol::RoomKind;
pub use protocol::RoomMessage;
pub use protocol::SignedRoomMessage;
pub use protocol::WireMessage;

Modules§

crypto
error
identity
invite
Phase C: invite-link encoding / decoding.
protocol
Wire protocol for room discovery and message broadcast.
relay
The relay control protocol: the JSON messages a huddle client and a huddle-server relay exchange over the WebSocket door.