Skip to content
File

Blob: firmware/vendor/str0m/Cargo.toml.orig

5.5 KB
1[package]
2name = "str0m"
3version = "0.23.1"
4authors = ["Martin Algesten <martin@algesten.se>", "Hugo Tunius <h@tunius.se>", "Davide Bertola <dade@dadeb.it>"]
5description = "WebRTC library in Sans-IO style"
6license = "MIT OR Apache-2.0"
7repository = "https://github.com/algesten/str0m"
8readme = "README.md"
9keywords = ["webrtc", "streaming", "video", "audio", "media"]
10categories = ["web-programming", "multimedia", "network-programming"]
11edition = "2024"
12exclude = ["/cargo_deny.sh", "/deny.toml", "/run-fuzz.sh"]
13 
14# MSRV
15rust-version = "1.85.0"
16 
17# Notes on OpenSSL
18# - Vendored (static link source build) ensures version consistency and easier
19# to build but increases size.
20# - Non-vendored (dynamic link) uses system libraries, reducing size but may
21# cause compatibility issues.
22# Choose based on security and footprint needs.
23# For large deployments sharing OS images, OS updates can be easier for
24# security patching than updating statically linked software.
25 
26[workspace]
27members = [
28 "crates/proto",
29 "crates/is",
30 "crates/netem",
31 "crates/_str0m_test",
32 "crypto/aws-lc-rs",
33 "crypto/rust-crypto",
34 "crypto/openssl",
35 "crypto/apple-crypto",
36 "crypto/wincrypto"
37]
38exclude = ["crates/fuzz"]
39 
40[workspace.dependencies]
41# Internal crates
42str0m = { version = "0.23.1", path = ".", default-features = false }
43str0m-proto = { version = "0.7.0", path = "crates/proto", default-features = false }
44is = { version = "0.11.0", path = "crates/is", default-features = false }
45str0m-netem = { version = "0.4.0", path = "crates/netem" }
46str0m-aws-lc-rs = { version = "0.6.0", path = "crypto/aws-lc-rs" }
47str0m-rust-crypto = { version = "0.6.0", path = "crypto/rust-crypto" }
48str0m-openssl = { version = "0.6.0", path = "crypto/openssl" }
49str0m-apple-crypto = { version = "0.6.0", path = "crypto/apple-crypto" }
50str0m-wincrypto = { version = "0.8.0", path = "crypto/wincrypto" }
51_str0m_test = { path = "crates/_str0m_test" }
52 
53# Core dependencies
54tracing = "0.1.37"
55fastrand = "2.0.1"
56sctp-proto = "0.10.4"
57combine = "4.6.6"
58subtle = "2.0.0"
59arrayvec = "0.7.6"
60serde = { version = "1.0.152", features = ["derive"] }
61dimpl = { version = "0.7.1", default-features = false }
62drv = { version = "0.4.3" }
63time = "0.3"
64base64ct = "1"
65 
66# Proto dependencies
67openssl = "0.10.78"
68 
69# IS dependencies
70crc = "3"
71hmac = "0.12.1"
72sha1 = "0.10"
73 
74# Crypto backend dependencies
75aws-lc-rs = { version = "1", default-features = false, features = ["aws-lc-sys", "prebuilt-nasm"] }
76aes-gcm = "0.10"
77aes = "0.8"
78ctr = "0.9"
79p256 = { version = "0.13", features = ["ecdh"] }
80sha2 = "0.10"
81openssl-sys = "0.9.80"
82libc = "0.2"
83der = "0.7"
84pkcs8 = { version = "0.10", features = ["pem"] }
85sec1 = "0.7"
86spki = "0.7"
87x509-cert = { version = "0.2", default-features = false }
88 
89# Dev/test dependencies
90rouille = "3.6.2"
91tempfile = "3"
92url = "2"
93serde_json = "1.0"
94tracing-subscriber = { version = "0.3.16", features = ["env-filter", "std"] }
95systemstat = "0.2.2"
96pcap-file = "2.0.0"
97regex = "1.11.1"
98rand = "0.9.0"
99 
100[features]
101default = ["aws-lc-rs", "examples"]
102aws-lc-rs = ["dep:str0m-aws-lc-rs"]
103rust-crypto = ["dep:str0m-rust-crypto"]
104openssl = ["dep:str0m-openssl"]
105openssl-dimpl = ["dep:str0m-openssl", "str0m-openssl/dimpl"]
106wincrypto = ["dep:str0m-wincrypto"]
107wincrypto-dimpl = ["dep:str0m-wincrypto", "str0m-wincrypto/dimpl"]
108apple-crypto = ["dep:str0m-apple-crypto"]
109vendored = ["str0m-openssl?/vendored"]
110unversioned = []
111 
112# Redacts personally identifiable information (PII) from logs debug and above
113pii = ["str0m-proto/pii", "is/pii"]
114 
115# The examples require TLS for the web server via rouille.
116# We use rustls instead of ssl to avoid OpenSSL dependency issues on Windows.
117examples = ["rouille/rustls"]
118 
119_internal_dont_use_log_stats = []
120_internal_test_exports = ["str0m-proto/_internal_test_exports", "is/_internal_test_exports"]
121 
122# Derives `drv::Input` (drv's memoization cache-key plumbing) on the public
123# identity types — Mid, Rid, Ssrc, Pt, SessionId, SeqNo, Direction, MediaKind,
124# Frequency, Codec, CodecSpec, FormatParams, VideoOrientation, and the H265
125# profile types — so downstream `#[drv::memo]` queries can take them by value.
126# Off by default.
127drv = ["dep:drv"]
128 
129[dependencies]
130tracing.workspace = true
131fastrand.workspace = true
132sctp-proto.workspace = true
133combine.workspace = true
134subtle.workspace = true
135arrayvec.workspace = true
136serde.workspace = true
137time.workspace = true
138base64ct.workspace = true
139 
140# DTLS made for str0m (required dependency)
141dimpl.workspace = true
142 
143str0m-proto = { workspace = true, features = ["dtls"] }
144is.workspace = true
145 
146drv = { workspace = true, optional = true }
147 
148# Crypto providers
149str0m-aws-lc-rs = { workspace = true, optional = true }
150str0m-rust-crypto = { workspace = true, optional = true }
151str0m-openssl = { workspace = true, optional = true }
152 
153[target.'cfg(target_vendor = "apple")'.dependencies]
154str0m-apple-crypto = { workspace = true, optional = true }
155 
156[target.'cfg(windows)'.dependencies]
157# Windows Crypto (CNG + SChannel)
158str0m-wincrypto = { workspace = true, optional = true }
159 
160[dev-dependencies]
161rouille.workspace = true
162str0m-rust-crypto.workspace = true
163tempfile.workspace = true
164url.workspace = true
165serde_json.workspace = true
166tracing-subscriber.workspace = true
167systemstat.workspace = true
168pcap-file.workspace = true
169regex.workspace = true
170rand.workspace = true
171 
172# Package rename not supported with workspace inheritance
173netem = { package = "str0m-netem", version = "0.4.0", path = "crates/netem" }
174 
175# dummy package that enables "_internal_test_exports"
176_str0m_test = { path = "crates/_str0m_test" }
177 
178[[example]]
179name = "chat"
180required-features = ["examples"]
181 
182[[example]]
183name = "http-post"
184required-features = ["examples"]