arti/crates/tor-netdir
Nick Mathewson a25960b44c tor-netdir: Resolve an XXXX about type ugliness
We had no function to infallibly convert BoundedInt32<{0 or 1},H>
into a u32, even though we could have.  Because of that, we were
treating weight_scale as an i32 when logically it's a u32 or a
NonZeroU32.

Moreover, it turns out we were using an incorrect minimum for the
bwweightscale param, which would in theory have allowed the
authorities to make us divide by zero.

This patch introduces the necessary From<> implementation and uses
it.  It corrects the binimum bwweightscale, and prevents a
division-by-zero issue in case weight_scale is zero.
2021-12-08 12:32:44 -05:00
..
src tor-netdir: Resolve an XXXX about type ugliness 2021-12-08 12:32:44 -05:00
Cargo.toml Upgrade to digest v0.10.0 2021-12-07 20:33:46 -05:00
README.md Move all crates into a `crates` subdirectory. 2021-08-27 09:53:09 -04:00

README.md

tor-netdir

Represents a clients'-eye view of the Tor network.

Overview

The tor-netdir crate wraps objects from tor-netdoc, and combines them to provide a unified view of the relays on the network. It is responsible for representing a client's knowledge of the network's state and who is on it.

This crate is part of Arti, a project to implement Tor in Rust. Its purpose is to expose an abstract view of a Tor network and the relays in it, so that higher-level crates don't need to know about the particular documents that describe the network and its properties.

There are two intended users for this crate. First, producers like [tor-dirmgr] create [NetDir] objects fill them with information from the Tor network directory. Later, consumers like [tor-circmgr] use [NetDir]s to select relays for random paths through the Tor network.

Limitations

Only modern consensus methods and microdescriptor consensuses are supported.

License: MIT OR Apache-2.0