____ _ _______ __
/ __ \ | /| / / __/ |/ /
/ /_/ / |/ |/ / _// /
\____/|__/|__/___/_||_/
snolc / Cargo.toml
[package]
name = "snolc"
version = "0.1.0"
edition = "2024"
rust-version = "1.98"
license = "BSD-2-Clause"
repository = "https://github.com/owenewans/snolc"
description = "Userspace-stack proxy resistant to traffic filtering"
publish = false
[[bin]]
name = "snolc"
path = "src/main.rs"
[[bin]]
name = "snolc-geoconv"
path = "src/bin/geoconv.rs"
[dependencies]
aes-gcm = { version = "0.11.1", features = ["zeroize"] }
async-trait = "0.1.89"
base64 = "0.22.1"
boring = "5"
bytes = "1.10.1"
chacha20 = { version = "0.10.0", features = ["zeroize"] }
chacha20poly1305 = { version = "0.11.0", features = ["zeroize"] }
ed25519-dalek = "3.0.0"
futures = "0.3.31"
getrandom = { version = "0.4.3", features = ["sys_rng"] }
hkdf = "0.13.0"
hmac = "0.13.0"
ipnet = { version = "2.11.0", features = ["serde"] }
rustls = { version = "0.23", default-features = false, features = ["ring", "logging", "std", "tls12"] }
rustls-acme = { version = "0.15", default-features = false, features = ["ring", "tokio", "webpki-roots"] }
russh = { version = "0.63", default-features = false, features = ["ring"] }
rand = "0.10"
smoltcp = { version = "0.14", default-features = false, features = ["std", "log", "medium-ip", "proto-ipv4", "proto-ipv6", "socket-tcp", "socket-udp", "phy-tuntap_interface"] }
libc = "0.2"
serde = { version = "1.0.219", features = ["derive"] }
sha2 = "0.11.0"
subtle = "2.6.1"
thiserror = "2.0.16"
tokio = { version = "1.53.0", features = ["fs", "io-util", "macros", "net", "rt-multi-thread", "signal", "sync", "time"] }
tokio-boring = "5"
tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] }
tokio-stream = "0.1"
tokio-util = { version = "0.7.16", features = ["compat"] }
webrtc = { version = "=0.20.4", default-features = false, features = ["runtime-tokio"] }
webpki-roots = "1"
x25519-dalek = { version = "3.0.0", features = ["getrandom"] }
yaml_serde = "0.10.7"
yamux = "0.14.0"
zeroize = "1.8.1"
[dev-dependencies]
tempfile = "3.21.0"
# boring-sys 5.2.0 unconditionally lets BoringSSL's own CMakeLists.txt pull
# in third_party/benchmark, whose configure-time regex-backend probe is a
# try_compile+try_run check -- it cannot execute a cross-compiled target
# binary on the host, so it always fails ("Failed to determine the source
# files for the regular expression backend") when cross-compiling for
# Android. Patched to pass `-DBUILD_TESTING=OFF` for that target, since we
# only need libssl/libcrypto, never BoringSSL's own tests or benchmarks.
# https://github.com/owenewans/owenboring/commit/3f66b77df55133132b21b04a0c35c56e3a3b8db8
# (which also bumps the vendored boringssl submodule to
# https://github.com/owenewans/owenboringssl/commit/eadd1fe8185782c0885926c4f5ff721e483bb28e,
# forcing BUILD_TESTING off directly in BoringSSL's own CMakeLists.txt --
# a `-DBUILD_TESTING=OFF` passed only from boring-sys's build script does
# not reliably survive the Android NDK toolchain file's own internal
# cache-reset/reconfigure). See both forks' readmes for the full writeup.
[patch.crates-io]
boring-sys = { git = "https://github.com/owenewans/owenboring", rev = "3f66b77df55133132b21b04a0c35c56e3a3b8db8" }