forked from algesten/str0m
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCargo.toml
More file actions
174 lines (150 loc) · 5.13 KB
/
Cargo.toml
File metadata and controls
174 lines (150 loc) · 5.13 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
[package]
name = "str0m"
version = "0.18.0"
authors = ["Martin Algesten <martin@algesten.se>", "Hugo Tunius <h@tunius.se>", "Davide Bertola <dade@dadeb.it>"]
description = "WebRTC library in Sans-IO style"
license = "MIT OR Apache-2.0"
repository = "https://github.com/algesten/str0m"
readme = "README.md"
keywords = ["webrtc", "streaming", "video", "audio", "media"]
categories = ["web-programming", "multimedia", "network-programming"]
edition = "2024"
exclude = ["/cargo_deny.sh", "/deny.toml", "/run-fuzz.sh"]
# MSRV
rust-version = "1.85.0"
# Notes on OpenSSL
# - Vendored (static link source build) ensures version consistency and easier
# to build but increases size.
# - Non-vendored (dynamic link) uses system libraries, reducing size but may
# cause compatibility issues.
# Choose based on security and footprint needs.
# For large deployments sharing OS images, OS updates can be easier for
# security patching than updating statically linked software.
[workspace]
members = [
"crates/proto",
"crates/is",
"crates/netem",
"crates/_str0m_test",
"crypto/aws-lc-rs",
"crypto/rust-crypto",
"crypto/openssl",
"crypto/apple-crypto",
"crypto/wincrypto",
]
exclude = ["crates/fuzz"]
[workspace.dependencies]
# Internal crates
str0m = { version = "0.18.0", path = ".", default-features = false }
str0m-proto = { version = "0.4.0", path = "crates/proto", default-features = false }
is = { version = "0.8.0", path = "crates/is", default-features = false }
str0m-netem = { version = "0.2.0", path = "crates/netem" }
str0m-aws-lc-rs = { version = "0.3.0", path = "crypto/aws-lc-rs" }
str0m-rust-crypto = { version = "0.3.0", path = "crypto/rust-crypto" }
str0m-openssl = { version = "0.3.0", path = "crypto/openssl" }
str0m-apple-crypto = { version = "0.3.0", path = "crypto/apple-crypto" }
str0m-wincrypto = { version = "0.5.0", path = "crypto/wincrypto" }
_str0m_test = { path = "crates/_str0m_test" }
# Core dependencies
tracing = "0.1.37"
fastrand = "2.0.1"
sctp-proto = "0.9.0"
combine = "4.6.6"
subtle = "2.0.0"
arrayvec = "0.7.6"
serde = { version = "1.0.152", features = ["derive"] }
dimpl = { version = "0.5.0", default-features = false }
time = "0.3"
base64ct = "1"
# Proto dependencies
openssl = "0.10.70"
# IS dependencies
crc = "3"
hmac = "0.12.1"
sha1 = "0.10"
# Crypto backend dependencies
aws-lc-rs = { version = "1", default-features = false, features = ["aws-lc-sys", "prebuilt-nasm"] }
aes-gcm = "0.10"
aes = "0.8"
ctr = "0.9"
p256 = { version = "0.13", features = ["ecdh"] }
sha2 = "0.10"
openssl-sys = "0.9.80"
libc = "0.2"
der = "0.7"
pkcs8 = { version = "0.10", features = ["pem"] }
sec1 = "0.7"
spki = "0.7"
x509-cert = { version = "0.2", default-features = false }
# Dev/test dependencies
rouille = "3.6.2"
tempfile = "3"
url = "2"
serde_json = "1.0"
tracing-subscriber = { version = "0.3.16", features = ["env-filter", "std"] }
systemstat = "0.2.2"
pcap-file = "2.0.0"
regex = "1.11.1"
rand = "0.9.0"
[features]
default = ["aws-lc-rs", "examples"]
aws-lc-rs = ["dep:str0m-aws-lc-rs"]
rust-crypto = ["dep:str0m-rust-crypto"]
openssl = ["dep:str0m-openssl"]
openssl-dimpl = ["dep:str0m-openssl", "str0m-openssl/dimpl"]
wincrypto = ["dep:str0m-wincrypto"]
wincrypto-dimpl = ["dep:str0m-wincrypto", "str0m-wincrypto/dimpl"]
apple-crypto = ["dep:str0m-apple-crypto"]
vendored = ["str0m-openssl?/vendored"]
unversioned = []
# Redacts personally identifiable information (PII) from logs debug and above
pii = ["str0m-proto/pii", "is/pii"]
# The examples require TLS for the web server via rouille.
# We use rustls instead of ssl to avoid OpenSSL dependency issues on Windows.
examples = ["rouille/rustls"]
_internal_dont_use_log_stats = []
_internal_test_exports = ["str0m-proto/_internal_test_exports", "is/_internal_test_exports"]
[dependencies]
tracing.workspace = true
fastrand.workspace = true
sctp-proto.workspace = true
combine.workspace = true
subtle.workspace = true
arrayvec.workspace = true
serde.workspace = true
time.workspace = true
base64ct.workspace = true
# DTLS made for str0m (required dependency)
dimpl.workspace = true
str0m-proto = { workspace = true, features = ["dtls"] }
is.workspace = true
# Crypto providers
str0m-aws-lc-rs = { workspace = true, optional = true }
str0m-rust-crypto = { workspace = true, optional = true }
str0m-openssl = { workspace = true, optional = true }
[target.'cfg(target_vendor = "apple")'.dependencies]
str0m-apple-crypto = { workspace = true, optional = true }
[target.'cfg(windows)'.dependencies]
# Windows Crypto (CNG + SChannel)
str0m-wincrypto = { workspace = true, optional = true }
[dev-dependencies]
rouille.workspace = true
str0m-rust-crypto.workspace = true
tempfile.workspace = true
url.workspace = true
serde_json.workspace = true
tracing-subscriber.workspace = true
systemstat.workspace = true
pcap-file.workspace = true
regex.workspace = true
rand.workspace = true
# Package rename not supported with workspace inheritance
netem = { package = "str0m-netem", version = "0.2.0", path = "crates/netem" }
# dummy package that enables "_internal_test_exports"
_str0m_test = { path = "crates/_str0m_test" }
[[example]]
name = "chat"
required-features = ["examples"]
[[example]]
name = "http-post"
required-features = ["examples"]