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


  1. Remember, semantic versioning is what makes various cargo features work reliably. To be explicit: if you want cargo update to 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.
CircuitTimingBuilder
Builder for CircuitTiming.
ClockSkewEvents
A stream of SkewEstimate events.
FirstHopId
A unique cryptographic identifier for a selected guard or fallback directory.
PathConfig
Rules for building paths over the network.
PathConfigBuilder
Builder for PathConfig.
PreemptiveCircuitConfig
Configuration for preemptive circuits.
PreemptiveCircuitConfigBuilder
Builder for PreemptiveCircuitConfig.
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
TestConfigtesting
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.