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 - cargofeatures work reliably. To be explicit: if you want- cargo updateto only make safe changes, then you cannot enable these features. ↩
Re-exports§
- pub use isolation::IsolationToken;
Modules§
- build
- Facilities to build circuits directly, instead of via a circuit manager.
- hspoolhs-common
- Manage a pool of circuits for usage with onion services.
- isolation
- Types related to stream isolation
- path
- Code to construct paths through the Tor network
- timeouts
- Code for estimating good values for circuit timeouts.
Structs§
- CircMgr
- A Circuit Manager (CircMgr) manages a set of circuits, returning them when they’re suitable, and launching them if they don’t already exist.
- CircuitTiming 
- Configuration for circuit timeouts, expiration, and so on.
- CircuitTiming Builder 
- Builder for CircuitTiming.
- ClientData Tunnel 
- A client single path data tunnel.
- ClientDirTunnel 
- A client directory tunnel. This is always single path.
- ClientMulti Path Data Tunnel conflux
- A client multi path data tunnel (Conflux).
- ClientMulti Path Onion Service Data Tunnel conflux
- A client multi path onion service data tunnel (Conflux, Rendeszvous).
- ClientOnion Service Data Tunnel 
- A client onion service single path data tunnel.
- ClientOnion Service DirTunnel 
- A client onion service directory tunnel (to an HSDir). This is always single path.
- ClientOnion Service Intro Tunnel 
- A client onion service introduction tunnel. This is always single path.
- ClockSkew Events 
- A stream of SkewEstimateevents.
- FirstHopId 
- A unique cryptographic identifier for a selected guard or fallback directory.
- PathConfig 
- Rules for building paths over the network.
- PathConfig Builder 
- Builder for PathConfig.
- PreemptiveCircuit Config 
- Configuration for preemptive circuits.
- PreemptiveCircuit Config Builder 
- Builder for PreemptiveCircuitConfig.
- ServiceMulti Path Onion Service Data Tunnel conflux
- A service multi path onion service data tunnel (Conflux, Rendeszvous).
- ServiceOnion Service Data Tunnel 
- A service onion service single path data tunnel.
- ServiceOnion Service DirTunnel 
- A service onion service directory tunnel (to an HSDir). This is always single path.
- ServiceOnion Service Intro Tunnel 
- A service onion service introduction tunnel. This is always single path.
- SkewEstimate 
- An estimate of how skewed our clock is, plus a summary of why we think so.
- TargetPort 
- A port that we want to connect to as a client.
- TargetPorts 
- Set of requested target ports, mostly for use in error reporting
- TestConfig testing
- Testing configuration, with public fields
Enums§
- DirInfo
- Represents what we know about the Tor network.
- Error
- An error returned while looking up or building a circuit
- ExternalActivity 
- An activity that can succeed or fail, and whose success or failure can be attributed to a guard.
Traits§
- CircMgrConfig 
- Configuration for a circuit manager
- GuardMgrConfig 
- Configuration for a guard manager
Type Aliases§
- Result
- A Result type as returned from this crate.