Expand description
§tor-linkspec
Descriptions of Tor relays, as used to connect to them.
§Overview
The tor-linkspec
crate provides traits and data structures that
describe how to connect to Tor relays.
When describing the location of a Tor relay on the network, the
Tor protocol uses a set of “link specifiers”, each of which
corresponds to a single aspect of the relay’s location or
identity—such as its IP address and port, its Ed25519 identity
key, its (legacy) RSA identity fingerprint, or so on. This
crate’s LinkSpec
type encodes these structures.
When a client is building a circuit through the Tor network, it
needs to know certain information about the relays in that
circuit. This crate’s ChanTarget
and CircTarget
traits
represent objects that describe a relay on the network that a
client can use as the first hop, or as any hop, in a circuit.
This crate is part of Arti, a project to implement Tor in Rust. Several other crates in Arti depend on it. You will probably not need this crate yourself unless you are interacting with the Tor protocol at a fairly low level.
tor-linkspec
is a separate crate so that it can be used by other
crates that expose link specifiers and by crates that consume
them.
§Future work
TODO: Possibly we should rename this crate. “Linkspec” is a pretty esoteric term in the Tor protocols.
TODO: Possibly the link specifiers and the *Target
traits belong in different crates.
§Compile-time features
-
pt-client
– Build with enhanced data types to support pluggable transports. -
full
– Build with all the 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
– Build with all experimental features above. (Currently, there are no experimental features in this crate, but there may be in the future.)
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. ↩
Modules§
- decode
decode
- Analyze a list of link specifiers as a
OwnedChanTarget
. - verbatim
verbatim
- Wrappers for using a CircTarget with a verbatim list of link specifiers.
Structs§
- Bridge
Addr - An address of a bridge, for use in configuration.
- ByRelay
Ids - A set of objects that can be accessed by relay identity.
- Encoded
Link Spec - An unparsed piece of information about a relay and how to connect to it.
- Link
Spec Type - A numeric identifier for the type of a
LinkSpec
. - List
ByRelay Ids - A list of objects that can be accessed by relay identity.
- List
ByRelay IdsIter - An iterator for
ListByRelayIds
. - Owned
Chan Target - OwnedChanTarget is a summary of a
ChanTarget
that owns all of its members. - Owned
Chan Target Builder - Builder for
OwnedChanTarget
. - Owned
Circ Target - OwnedCircTarget is a summary of a
CircTarget
that owns all its members. - Owned
Circ Target Builder - Builder for
OwnedCircTarget
. - PtTarget
- The set of information passed to the pluggable transport subsystem in order to establish a connection to a bridge relay.
- PtTarget
Settings - A set of options to be passed along to a pluggable transport along with a single target bridge relay.
- PtTransport
Name - The name of a Pluggable Transport protocol.
- Relay
IdSet - A set of relay identities, backed by
HashSet
. - Relay
IdType Iter - An iterator over the variants of RelayIdType
- Relay
Ids - RelayIds is an owned copy of the set of known identities of a relay.
- Relay
IdsBuilder - Builder for
RelayIds
. - Transport
Id - Identify a type of Transport.
Enums§
- Bridge
Addr Error - An error from parsing a
BridgeAddr
orPtTargetAddr
. - ByRelay
IdsError - An error returned from an operation on an
n_key_set
. - Channel
Method - The way to approach a single relay in order to open a channel.
- Link
Spec - A piece of information about a relay and how to connect to it.
- List
ByRelay IdsError - An error returned from an operation on an
n_key_list
. - PtTarget
Addr - An address that an be passed to a pluggable transport to tell it where to connect (typically, to a bridge).
- PtTarget
Invalid Setting - Invalid PT parameter setting
- RelayId
- A single relay identity.
- Relay
IdError - An error returned while trying to parse a RelayId.
- Relay
IdRef - A reference to a single relay identity.
- Relay
IdType - The type of a relay identity.
- Transport
IdError - An error related to parsing a TransportId.
Traits§
- Chan
Target - Information about a Tor relay used to connect to it.
- Circ
Target - Information about a Tor relay used to extend a circuit to it.
- Direct
Chan Methods Helper - Implement
HasChanMethods
for an object withHasAddr
whose addresses all represent a host we can connect to by a direct Tor connection at its IP addresses. - HasAddrs
- An object that represents a host on the network which may have known IP addresses.
- HasChan
Method - An object that can be connected to via
ChannelMethod
s. - HasRelay
Ids - An object containing information about a relay’s identity keys.
- HasRelay
IdsLegacy - Legacy implementation helper for HasRelayIds.
- Into
Owned Chan Target - A value that can be converted into an OwnedChanTarget.
Type Aliases§
- Logged
Chan Target - An
OwnedChanTarget
suitable for logging and including in errors