- E2EE chat server: Chat server: the handshake and mailbox services over gRPC
- E2EE chat client: TUI chat client, support image
Libraries; only ratchetx2 is published on crates.io:
- ratchetx2: Double-Ratchet
- xeddsa: XEdDSA, signing and Diffie-Hellman with one key
- x3dh: X3DH key agreement, without I/O
- party: a chat party: double ratchet with header encryption, and the encrypted message format
- storage: what the servers store, as traits over typed records, with an in-memory backend
- protocol: the handshake and mailbox protocol (protobuf), its client traits, the servers' logic, and gRPC
- session: the client flow: publish keys, start or accept sessions, send and receive
All are pure Rust. Except for gRPC, they build for wasm32-unknown-unknown, so a client can run in the browser and the servers' logic in e.g. a Cloudflare Worker, over a storage backend of its own.
