Crate tor_circmgr
source ·Expand description
tor-circmgr
circuits through the Tor network on demand.
Overview
This crate is part of Arti, a project to implement Tor in Rust.
In Tor, a circuit is an encrypted multi-hop tunnel over multiple relays. This crate’s purpose, long-term, is to manage a set of circuits for a client. It should construct circuits in response to a client’s needs, and preemptively construct circuits so as to anticipate those needs. If a client request can be satisfied with an existing circuit, it should return that circuit instead of constructing a new one.
Compile-time features
-
specific-relay
: Support for connecting to a relay via specifically provided connection instructions, rather than using information from a Tor network directory. -
full
: Enable all features above.
Experimental and unstable features
Note that the APIs enabled by these features are NOT covered by semantic versioning1 guarantees: we might break them or remove them between patch versions.
-
experimental-api
: Add additional non-stable APIs to our public interfaces. -
experimental
: Enable all the above experimental features.
License: MIT OR Apache-2.0
Remember, semantic versioning is what makes various
cargo
features work reliably. To be explicit: if you wantcargo update
to only make safe changes, then you cannot enable these features. ↩
Re-exports
pub use isolation::IsolationToken;
Modules
- Facilities to build circuits directly, instead of via a circuit manager.
- hspool
hs-common
Manage a pool of circuits for usage with onion services. - Types related to stream isolation
- Code to construct paths through the Tor network
- Code for estimating good values for circuit timeouts.
Structs
- A Circuit Manager (CircMgr) manages a set of circuits, returning them when they’re suitable, and launching them if they don’t already exist.
- Configuration for circuit timeouts, expiration, and so on.
- Builder for
CircuitTiming
. - A stream of
SkewEstimate
events. - A unique cryptographic identifier for a selected guard or fallback directory.
- Rules for building paths over the network.
- Builder for
PathConfig
. - Configuration for preemptive circuits.
- Builder for
PreemptiveCircuitConfig
. - An estimate of how skewed our clock is, plus a summary of why we think so.
- A port that we want to connect to as a client.
- Set of requested target ports, mostly for use in error reporting
- TestConfig
testing
Testing configuration, with public fields
Enums
- Represents what we know about the Tor network.
- An error returned while looking up or building a circuit
- An activity that can succeed or fail, and whose success or failure can be attributed to a guard.
Traits
- Configuration for a circuit manager
- Configuration for a guard manager
Type Aliases
- A Result type as returned from this crate.