huddle-core 0.7.13

Protocol, networking, crypto, and storage layer for huddle — a decentralized terminal chat app.
Documentation
[package]
name = "huddle-core"
version = "0.7.13"
edition = "2021"
description = "Protocol, networking, crypto, and storage layer for huddle — a decentralized terminal chat app."
license = "MIT OR Apache-2.0"
repository = "https://github.com/richer-richard/huddle"
homepage = "https://github.com/richer-richard/huddle"
readme = "README.md"
keywords = ["chat", "p2p", "libp2p", "mdns", "encryption"]
categories = ["network-programming", "cryptography"]

[dependencies]
libp2p = { version = "0.56", features = [
    "mdns", "identify", "ping", "request-response",
    "tcp", "noise", "yamux", "tokio", "ed25519", "macros", "gossipsub",
    # Phase D — internet reach. relay-client lets us register with a
    # public relay so peers behind NAT can dial us through it; autonat
    # tells us whether we're NAT'd; dcutr (Direct Connection Upgrade
    # through Relay) attempts to hole-punch to a direct connection
    # once a relayed connection forms, dropping the relay hop when it
    # succeeds.
    "relay", "autonat", "dcutr",
] }
vodozemac = "0.10"
ed25519-dalek = { version = "2", features = ["rand_core"] }
rusqlite = { version = "0.39", features = ["bundled-sqlcipher-vendored-openssl"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tracing = "0.1"
sha2 = "0.11"
hkdf = "0.13"
hex = "0.4"
dirs = "6"
rand = "0.8"
futures = "0.3"
async-trait = "0.1"
argon2 = "0.5"
chacha20poly1305 = "0.10"
base64 = "0.22"
x25519-dalek = { version = "2", features = ["static_secrets"] }
# huddle 0.7.11: zeroize key material on drop. Used to wrap the
# passphrase-derived 32-byte key, the DM HKDF output, the SAS shared
# secret, and the master-passphrase-derived DB key — anywhere a secret
# byte slice would otherwise linger on the heap until the next alloc.
zeroize = { version = "1", features = ["derive"] }

[dev-dependencies]
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tempfile = "3"