warzone-wasm crate: - Compiles warzone-protocol to WebAssembly via wasm-pack - Exposes WasmIdentity, WasmSession, decrypt_wire_message to JS - Same X25519 + ChaCha20-Poly1305 + X3DH + Double Ratchet as CLI - 344KB WASM binary (optimized with wasm-opt) WireMessage moved to warzone-protocol: - Shared type used by CLI client, WASM bridge, and TUI - Guarantees identical bincode serialization across all clients Web client rewritten: - Loads WASM module on startup (/wasm/warzone_wasm.js) - Identity: WasmIdentity generates same key types as CLI - Registration: sends bincode PreKeyBundle (same format as CLI) - Encrypt: WasmSession.encrypt/encrypt_key_exchange - Decrypt: decrypt_wire_message (handles KeyExchange + Message) - Sessions persisted in localStorage (base64 ratchet state) - Groups: per-member WASM encryption (interop with CLI members) Server routes: - GET /wasm/warzone_wasm.js — serves WASM JS glue - GET /wasm/warzone_wasm_bg.wasm — serves WASM binary - Both embedded at compile time via include_str!/include_bytes! Web ↔ CLI interop now works: - Same key exchange (X3DH with X25519) - Same ratchet (Double Ratchet with ChaCha20-Poly1305) - Same wire format (bincode WireMessage) - Web user can message CLI user and vice versa Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
590 B
TOML
26 lines
590 B
TOML
[package]
|
|
name = "warzone-wasm"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
|
|
[lib]
|
|
crate-type = ["cdylib"]
|
|
|
|
[dependencies]
|
|
warzone-protocol = { path = "../warzone-protocol" }
|
|
wasm-bindgen = "0.2"
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
js-sys = "0.3"
|
|
web-sys = { version = "0.3", features = ["console"] }
|
|
getrandom = { version = "0.2", features = ["js"] }
|
|
base64.workspace = true
|
|
hex.workspace = true
|
|
bincode.workspace = true
|
|
x25519-dalek.workspace = true
|
|
uuid = { version = "1", features = ["v4", "serde", "js"] }
|
|
|
|
[profile.release]
|
|
opt-level = "s"
|
|
lto = true
|