The relay's TLS certificate is now derived from the persisted Ed25519 seed via HKDF, so the same seed produces the same cert and the same TLS fingerprint across restarts. This fixes the "Server Key Changed" warnings on every relay restart. Implementation: HKDF-SHA256(seed, "wzp-tls-ed25519") → Ed25519 signing key → PKCS8 DER → rcgen KeyPair → self-signed cert. Also adds tls_fingerprint() helper (SHA-256 of DER cert, hex with colons) and prints it on startup. This is the prerequisite for relay federation (peers verify each other by TLS fingerprint). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
56 lines
1.2 KiB
TOML
56 lines
1.2 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/wzp-proto",
|
|
"crates/wzp-codec",
|
|
"crates/wzp-fec",
|
|
"crates/wzp-crypto",
|
|
"crates/wzp-transport",
|
|
"crates/wzp-relay",
|
|
"crates/wzp-client",
|
|
"crates/wzp-web",
|
|
"crates/wzp-android",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.85"
|
|
|
|
[workspace.dependencies]
|
|
# Shared
|
|
bytes = "1"
|
|
thiserror = "2"
|
|
async-trait = "0.1"
|
|
tokio = { version = "1", features = ["full"] }
|
|
tracing = "0.1"
|
|
tracing-subscriber = "0.3"
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
# Transport
|
|
quinn = "0.11"
|
|
|
|
# FEC
|
|
raptorq = "2"
|
|
|
|
# Codec
|
|
audiopus = "0.3.0-rc.0"
|
|
codec2 = "0.3"
|
|
|
|
# Crypto
|
|
x25519-dalek = { version = "2", features = ["static_secrets"] }
|
|
ed25519-dalek = { version = "2", features = ["rand_core", "pkcs8"] }
|
|
chacha20poly1305 = "0.10"
|
|
hkdf = "0.12"
|
|
sha2 = "0.10"
|
|
rand = "0.8"
|
|
|
|
# Workspace crates
|
|
wzp-proto = { path = "crates/wzp-proto" }
|
|
wzp-codec = { path = "crates/wzp-codec" }
|
|
wzp-fec = { path = "crates/wzp-fec" }
|
|
wzp-crypto = { path = "crates/wzp-crypto" }
|
|
wzp-transport = { path = "crates/wzp-transport" }
|
|
wzp-client = { path = "crates/wzp-client" }
|