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;