Dorian
6c23360522
feat: add per-peer ratchet session manager with disk persistence
...
- Create mesh/session.rs: SessionManager for Double Ratchet state lifecycle
- Lazy-loads sessions from disk on first message
- Saves after every encrypt/decrypt (chain key advancement)
- Per-DID storage at {data_dir}/ratchet/{sha256(did)}.json
- Session info API for RPC status reporting
- Zeroize on drop for all key material
- Tests: store+load roundtrip, encrypt/decrypt through manager, session removal
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 01:54:26 +00:00
Dorian
e60ac99b12
feat: Phase 3 Week 2 — Double Ratchet protocol for forward-secret mesh messaging
...
- Create mesh/ratchet.rs: full Signal-style Double Ratchet implementation
- DH ratchet with X25519 ephemeral keypairs per step
- Symmetric-key ratchet via HKDF-SHA256 chain derivation
- Per-message ChaCha20-Poly1305 encryption with derived message keys
- Out-of-order delivery via skipped message key cache (max 100)
- Forward secrecy: old keys zeroized on ratchet step
- Wire format: 40B header + nonce + ciphertext + tag
- Tests: full conversation, out-of-order, forward secrecy, wire format,
long conversation (50 messages alternating), message roundtrip
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 01:50:22 +00:00
Dorian
37a591618d
feat: Phase 3 Week 1 — X3DH key agreement + HKDF foundation
...
- Add hkdf = "0.12" dependency for Double Ratchet key derivation
- Extend mesh/crypto.rs with hkdf_sha256, hkdf_sha256_32, hkdf_sha256_64,
and generate_x25519_ephemeral() for DH ratchet steps
- Create mesh/x3dh.rs: full X3DH key agreement protocol
- PrekeyBundle generation with Ed25519-signed prekeys
- 3-way (or 4-way) ECDH → HKDF-SHA256 → root key
- Initiator and responder sides derive identical root key
- CBOR encoding for mesh transmission
- Bundle signature verification
- 5 unit tests: generate+verify, both-sides-same-key,
without-one-time-prekey, cbor-roundtrip, tamper-detection
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 01:28:35 +00:00