Files
featherChat/warzone/crates/warzone-protocol/Cargo.toml
Siavash Sameni 5764719375 v0.0.38: FC-P4 complete — session versioning, wire envelope, auto-backup
FC-P4-T1: Session State Versioning
- RatchetState serialize/deserialize with [MAGIC:0xFC][VERSION:1][bincode]
- Legacy (raw bincode) still loads — backward compatible
- Client + WASM both use versioned format
- 2 new tests: roundtrip + legacy compat

FC-P4-T2: WireMessage Versioning Envelope
- Format: [WZ magic][version:u8][length:u32 BE][bincode payload]
- Server + client + WASM accept both envelope and legacy on receive
- Client still sends raw bincode (server handles both)
- Future version → "update required" error instead of crash
- 3 new tests: roundtrip, legacy compat, future version rejection

FC-P4-T3: Periodic Auto-Backup
- Every 5 minutes, encrypts sessions+contacts+sender_keys to ~/.warzone/backups/
- HKDF-derived key from seed, ChaCha20-Poly1305 AEAD
- Atomic writes (temp file + rename), rotates to keep last 3
- /backup command for manual trigger

127 tests passing (was 122)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 17:03:02 +04:00

49 lines
1.1 KiB
TOML

[package]
name = "warzone-protocol"
version = "0.0.38"
edition = "2021"
license = "MIT"
description = "Core crypto & wire protocol for featherChat (Warzone messenger)"
rust-version = "1.75"
# This crate is designed to be importable standalone — no workspace inheritance.
# WarzonePhone and other projects can depend on it directly via path or git.
[dependencies]
# Crypto
ed25519-dalek = { version = "2", features = ["serde", "rand_core"] }
x25519-dalek = { version = "2", features = ["serde", "static_secrets"] }
curve25519-dalek = "4"
chacha20poly1305 = "0.10"
hkdf = "0.12"
sha2 = "0.10"
rand = "0.8"
# Ethereum compatibility
k256 = { version = "0.13", features = ["ecdsa", "serde"] }
tiny-keccak = { version = "2", features = ["keccak"] }
# BIP39
bip39 = "2"
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
bincode = "1"
# Error handling
thiserror = "2"
# Encoding
hex = "0.4"
base64 = "0.22"
# UUID
uuid = { version = "1", features = ["v4", "serde"] }
# Memory safety
zeroize = { version = "1", features = ["derive"] }
# Time
chrono = { version = "0.4", features = ["serde"] }