v0.0.21: FC-CRATE-1 — make warzone-protocol importable standalone

Replaced workspace dep inheritance with explicit versions in
warzone-protocol/Cargo.toml. The crate now builds both as a
workspace member AND standalone.

WZP can now import warzone-protocol directly:
  warzone-protocol = { path = "../featherChat/warzone/crates/warzone-protocol" }

This means WZP can delete its mirrored identity/crypto code and use:
- warzone_protocol::identity::{Seed, IdentityKeyPair, PublicIdentity}
- warzone_protocol::crypto::{hkdf_derive, aead_encrypt, aead_decrypt}
- warzone_protocol::ethereum::{derive_eth_identity, EthAddress}
- warzone_protocol::message::{WireMessage, CallSignalType}
- warzone_protocol::types::Fingerprint

Single source of truth for identity derivation — no more HKDF mismatches.

28/28 tests pass. Zero warnings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-03-28 09:21:18 +04:00
parent 064a730b42
commit 4a4fa9fab4
2 changed files with 49 additions and 26 deletions

10
warzone/Cargo.lock generated
View File

@@ -2789,7 +2789,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-client" name = "warzone-client"
version = "0.0.20" version = "0.0.21"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"argon2", "argon2",
@@ -2822,7 +2822,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-mule" name = "warzone-mule"
version = "0.0.20" version = "0.0.21"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap", "clap",
@@ -2831,7 +2831,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-protocol" name = "warzone-protocol"
version = "0.0.20" version = "0.0.21"
dependencies = [ dependencies = [
"base64", "base64",
"bincode", "bincode",
@@ -2856,7 +2856,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-server" name = "warzone-server"
version = "0.0.20" version = "0.0.21"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"axum", "axum",
@@ -2883,7 +2883,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-wasm" name = "warzone-wasm"
version = "0.0.20" version = "0.0.21"
dependencies = [ dependencies = [
"base64", "base64",
"bincode", "bincode",

View File

@@ -1,25 +1,48 @@
[package] [package]
name = "warzone-protocol" name = "warzone-protocol"
version.workspace = true version = "0.0.21"
edition.workspace = true 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] [dependencies]
ed25519-dalek.workspace = true # Crypto
x25519-dalek.workspace = true ed25519-dalek = { version = "2", features = ["serde", "rand_core"] }
curve25519-dalek.workspace = true x25519-dalek = { version = "2", features = ["serde", "static_secrets"] }
chacha20poly1305.workspace = true curve25519-dalek = "4"
hkdf.workspace = true chacha20poly1305 = "0.10"
sha2.workspace = true hkdf = "0.12"
rand.workspace = true sha2 = "0.10"
bip39.workspace = true rand = "0.8"
serde.workspace = true
serde_json.workspace = true # Ethereum compatibility
bincode.workspace = true k256 = { version = "0.13", features = ["ecdsa", "serde"] }
thiserror.workspace = true tiny-keccak = { version = "2", features = ["keccak"] }
hex.workspace = true
base64.workspace = true # BIP39
uuid.workspace = true bip39 = "2"
zeroize.workspace = true
chrono.workspace = true # Serialization
k256.workspace = true serde = { version = "1", features = ["derive"] }
tiny-keccak.workspace = true 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"] }