1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
[]
= "huddle-core"
= "1.1.4"
= "2021"
= "Protocol, networking, crypto, and storage layer for huddle — a decentralized terminal chat app."
= "MIT OR Apache-2.0"
= "https://github.com/richer-richard/huddle"
= "https://github.com/richer-richard/huddle"
= "README.md"
= ["chat", "p2p", "libp2p", "mdns", "encryption"]
= ["network-programming", "cryptography"]
[]
= []
# huddle 1.0: in-process Tor via Arti — the `onion-arti` transport door.
# Heavy (~150 transitive crates, minutes of cold build, ~10-15 MB binary),
# so it's strictly opt-in. The default build never pulls arti.
= ["dep:arti-client", "dep:tor-rtcompat"]
[]
= { = "0.56", = [
"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",
] }
# huddle 0.8: client connector to the centralized huddle-server. The
# server is reachable only as a Tor v3 onion, so we dial it through Tor's
# local SOCKS5 proxy (tokio-socks) and speak WebSocket over that stream
# (tokio-tungstenite, version-matched to the server crate).
# huddle 1.0: `rustls-tls-native-roots` enables `wss://` to a clearnet
# relay using the system trust store (real certs via Caddy / Let's Encrypt /
# Cloudflare) — the TLS "door" alongside the onion ones.
= { = "0.24", = ["rustls-tls-native-roots"] }
# rustls 0.23 refuses to pick a TLS CryptoProvider implicitly unless exactly
# one of its `ring`/`aws-lc-rs` features is enabled in the FINAL binary's
# dependency closure. tokio-tungstenite (our `wss://` clearnet door) pulls
# rustls but no provider feature, and only the TUI happens to enable `ring`
# transitively (via ureq) — so huddle-gui's wss worker thread panicked at
# startup ("Could not automatically determine the process-level
# CryptoProvider"). Depend on `ring` directly so the provider is always
# linked, and install it explicitly (see `install_default_crypto_provider`).
# `ring` (not aws-lc-rs) keeps the build C-toolchain-free and matches the
# provider already in our tree. default-features=false avoids pulling
# aws-lc-rs (rustls' default), which would re-introduce the ambiguity.
= { = "0.23", = false, = ["ring", "std", "tls12", "logging"] }
= "0.5"
= "0.10"
= { = "2", = ["rand_core"] }
= { = "0.39", = ["bundled-sqlcipher-vendored-openssl"] }
= { = "1", = ["full"] }
= { = "1", = ["derive"] }
= "1"
= "2"
= "0.1"
= "0.11"
= "0.13"
= "0.4"
= "6"
= "0.8"
= "0.3"
= "0.1"
= "0.5"
= "0.10"
= "0.22"
= { = "2", = ["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.
= { = "1", = ["derive"] }
# huddle 1.0: in-process Tor (Arti) for the `onion-arti` door. Optional;
# only compiled under `--features arti`. rustls matches our existing TLS
# stack; onion-service-client lets the client dial `.onion` services.
= { = "0.42", = true, = false, = [
"tokio",
"rustls",
"onion-service-client",
"compression",
] }
= { = "0.42", = true, = false, = [
"tokio",
"rustls",
] }
[]
= { = "0.3", = ["env-filter"] }
= "3"