arti/crates/tor-circmgr
Nick Mathewson f15cde80de Use better reporting for guard status.
The previous code would report all failures to build a circuit as
failures of the guard.  But of course that's not right:  If we
fail to extend to the second or third hop, that might or might not
be the guard's fault.

Now we use the "pending status" feature of the GuardMonitor type so
that an early failure is attributed to the guard, but a later
failure is attributed as "Indeterminate".  Only a complete circuit
is called a success.  We use a new "GuardStatusHandle" type here so
that we can report the status early if there is a timeout.
2021-10-13 11:24:37 -04:00
..
src Use better reporting for guard status. 2021-10-13 11:24:37 -04:00
Cargo.toml Pass the guard manager down to the path selection functions. 2021-10-11 15:59:45 -04:00
README.md Move all crates into a `crates` subdirectory. 2021-08-27 09:53:09 -04:00

README.md

tor-circmgr

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.

Limitations

But for now, this tor-circmgr code is extremely preliminary; its data structures are all pretty bad, and it's likely that the API is wrong too.

The path generation code in this crate is missing a colossal number of features that you'd probably want in production: the paths it generates should not be considered secure.

License: MIT OR Apache-2.0