[package] name = "onionwire-sdk" version = "0.1.0" edition = "2024" rust-version = "1.91" description = "OnionWire Android/Kotlin SDK: in-process Arti onion transport, Noise IK, identity = ed25519 pubkey." license = "MIT" publish = false # Standalone workspace on purpose. # # Arti's TLS backends (`native-tls` vs `rustls`) are non-additive: exactly one # may be enabled per feature resolution. The Linux TUI crate keeps native-tls, # Android has no OpenSSL in the NDK and needs rustls. Two separate workspaces # keep the two resolutions from colliding — this crate path-depends on the # root package without joining its feature graph. [workspace] [lib] name = "onionwire_sdk" crate-type = ["cdylib", "lib"] [dependencies] onionwire = { path = "../..", default-features = false, features = ["rustls"] } # `static-sqlite`: Android has no system libsqlite3 to link against. arti-client = { version = "0.46", default-features = false, features = [ "tokio", "onion-service-client", "onion-service-service", "compression", "rustls", "static-sqlite", ] } tokio = { version = "1", features = ["rt-multi-thread", "time"] } # rustls 0.23 resolves its provider from its OWN `ring` / `aws-lc-rs` features, # never from whichever crypto crates happen to be linked in the graph. Arti # pulls rustls in through `tor-rtcompat` with `default-features = false`, so # unless this crate turns a provider feature on, rustls compiles with zero # providers and the first TLS config built from the process default fails at # runtime. (Currently: no provider feature — see the regression test in # `tests/provider_resolution.rs`.) rustls = { version = "0.23", default-features = false } uniffi = { version = "0.32", features = ["cli", "tokio"] } thiserror = "2" [[bin]] name = "uniffi-bindgen" path = "src/bin/uniffi-bindgen.rs"