Skip to content
kingwingflyPublic

About

A double-ratchet implementation for building an E2EE message exchange app.

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Repository files navigation

About

The web client: a chat with read receipts, a file and an image

  • E2EE chat Worker: the chat server as a Cloudflare Worker, over Connect, storing in Durable Objects and R2, and serving the web client
  • E2EE chat web client: the web client, in Leptos: keys and sessions stay in the browser, in a vault sealed by a passphrase

The TUI chat client, e2ee_chat_client, is archived: its last version is at the tag archive/e2ee_chat_client, where it still talks to the Worker, and with the web client.

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 Connect over any HTTP stack
  • session: the client flow: publish keys, start or accept sessions, send and receive

All are pure Rust and 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, as the web client and the Worker do.

About

A double-ratchet implementation for building an E2EE message exchange app.

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages