[package] name = "obscura-net" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true [features] default = [] stealth = ["wreq", "wreq-util", "futures-util"] [dependencies] reqwest = { workspace = true } tokio = { workspace = true } url = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } tracing = { workspace = true } thiserror = { workspace = true } async-trait = "0.1" encoding_rs = "0.8" tempfile = "3" futures-util = { version = "0.3", optional = true } # wreq and wreq-util are pre-release crates whose API changes between rc builds # (CertStore moved out of `tls`, `cert_store` renamed to `tls_cert_store`, the # Emulation builder reshuffled). A caret requirement let a fresh resolve pull a # newer, incompatible rc and broke `cargo build --features stealth` (issue #234). # Pin exact versions so the build always resolves to the API wreq_client.rs targets. wreq-util = { version = "=3.0.0-rc.12", optional = true } [dev-dependencies] # TLS fixtures for the configured-roots tests: rcgen mints a throwaway CA + leaf, # tokio-rustls serves one HTTPS response with them. Pinned to the ring # provider so the test binary has a single rustls CryptoProvider (reqwest's # rustls also uses ring; adding aws-lc-rs would make provider auto-selection # panic). rcgen = "0.13" tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12", "logging"] } # `prefix-symbols` renames BoringSSL exports to avoid clashes with system OpenSSL, # but the renaming is only correct on Linux and Android (per wreq's README). # Enabling it on other platforms produces unresolved `build_script_main_*` # symbols at link time (see issue #39). [target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] wreq = { version = "=6.0.0-rc.29", optional = true, features = ["prefix-symbols", "socks", "stream", "gzip", "brotli", "deflate", "zstd"] } [target.'cfg(not(any(target_os = "linux", target_os = "android")))'.dependencies] wreq = { version = "=6.0.0-rc.29", optional = true, features = ["socks", "stream", "gzip", "brotli", "deflate", "zstd"] }