/ abzu-transport / Cargo.toml
Cargo.toml
 1  [package]
 2  name = "abzu-transport"
 3  version = "0.1.0"
 4  edition = "2024"
 5  publish = false
 6  
 7  [dependencies]
 8  # Serialization - postcard for maximum density (no_std compatible)
 9  serde = { version = "1.0", default-features = false, features = ["derive", "alloc"] }
10  serde_bytes = "0.11"
11  postcard = { version = "1.0", default-features = false, features = ["alloc"] }
12  
13  # Async runtime
14  tokio = { version = "1.0", features = ["net", "io-util", "sync", "macros", "time", "rt"] }
15  async-trait = "0.1"
16  
17  # WebSocket support
18  tokio-tungstenite = "0.20"
19  futures-util = "0.3"
20  
21  
22  # Encryption
23  chacha20poly1305 = "0.10"
24  x25519-dalek = "2"
25  hkdf = "0.12"
26  sha2 = "0.10"
27  rand = "0.8"
28  
29  # Error handling
30  thiserror = "1.0"
31  
32  # Profile loading
33  toml = "0.8"
34  
35  # DHT types
36  abzu-dht = { path = "../abzu-dht" }
37  
38  # Logging
39  tracing = "0.1"
40  stun-proto = "1.0.2"
41  
42  # Parser combinators for TLS structures
43  winnow = "0.7"
44  
45  # Concurrent hash map for rate limiting
46  dashmap = "6"
47  
48  # TURN relay - SOVEREIGNTY: disable default features to prevent aws-lc-rs
49  # We explicitly enable rustls via the workspace rustls dependency with ring
50  turn-client-proto = { version = "0.5.0", optional = true, default-features = false, features = ["std", "rustls"] }
51  
52  # TLS - SOVEREIGNTY: Force ring provider, blocking aws-lc-rs (Amazon C++ crypto)
53  rustls = { version = "0.23", default-features = false, features = ["ring", "logging", "std", "tls12"], optional = true }
54  
55  [dev-dependencies]
56  tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "time", "sync"] }
57  proptest = "1.0"
58  serial_test = "3"
59  
60  [features]
61  default = ["std", "relay"]
62  std = ["serde/std", "postcard/use-std"]
63  relay = ["turn-client-proto", "dep:rustls"]
64  # Ghost Mode: Cover traffic machinery. Exclude for mobile builds.
65  ghost = []
66  # WebRTC transport for browser P2P
67  webrtc = ["dep:webrtc", "dep:bytes"]
68  
69  [dependencies.webrtc]
70  version = "0.14"
71  optional = true
72  
73  [dependencies.bytes]
74  version = "1"
75  optional = true