summaryrefslogtreecommitdiff
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
...
* | tor-netdoc: Add a Lifetime::valid_at method.Nick Mathewson2022-05-111-0/+1
|/
* netdoc: add a new type for NicknamesNick Mathewson2022-05-091-0/+5
| | | | | | | | | | Relay nicknames are always between 1 and 19 characters long, and they're always ASCII: That means that storing them in a [u8;19] will always be possible, and always use less resources than storing them in a String. Fortunately, the tinystr crate already helps us with this kind of thing.
* Merge branch 'use-fs-mistrust'Nick Mathewson2022-05-091-0/+16
|\
| * Remove "Mistrust" from the public API of arti-client.Nick Mathewson2022-05-091-1/+2
| | | | | | | | | | | | | | | | | | | | I'm doing this per discussion, so that we can have it be part of the TorConfig later on, and not break stuff as we change the Mistrust API to have a builder. This change, unfortunately, results in a little more internal complexity and duplicated code in arti and arti-client. I've marked those points with TODOs.
| * arti: use fs-mistrust to validate configuration file locations.Nick Mathewson2022-05-091-0/+1
| |
| * arti-client: Configure and use fs-mistrust.Nick Mathewson2022-05-091-0/+6
| | | | | | | | | | | | This is derived from the environment, not the configuration file: We might not want to trust the configuration file until we've decided whether we like its permissions.
| * Update tor-dirmgr to use fs-mistrust.Nick Mathewson2022-05-091-0/+1
| |
| * tor-persist: Use fs-mistrust to verify state file permissions.Nick Mathewson2022-05-091-0/+4
| |
* | Clear semver_status now that 0.3.0 is coming out.Nick Mathewson2022-05-061-72/+1
|/
* semver notes: Fix a missing parenIan Jackson2022-05-051-1/+1
|
* semver note about serde attribute changesIan Jackson2022-05-051-0/+2
|
* Merge branch 'socket-addr-list-builder' into 'main'Ian Jackson2022-05-041-1/+3
|\ | | | | | | | | FallbackDir: orports: Introduce and use VecBuilder See merge request tpo/core/arti!474
| * FallbackDir: Use VecBuilder for orportsIan Jackson2022-05-041-0/+1
| | | | | | | | | | | | | | And drop the ad-hoc orport() method. This brings FallbackDir's orports field in line with our list builder API. The general semver note in "configuation" seems to cover most of this.
| * list_builder: Update semver noteIan Jackson2022-05-041-1/+2
| |
* | GuardUsage: restrictions Add semver noteIan Jackson2022-05-041-0/+1
|/
* Fix spacingSamanta Navarro2022-04-271-4/+4
|
* Fix grammar and typosSamanta Navarro2022-04-273-3/+3
|
* Merge branch 'upgrade_dependencies' into 'main'eta2022-04-271-0/+4
|\ | | | | | | | | | | | | Upgrade various dependencies, now that we are MSRV 1.56 Closes #313 and #334 See merge request tpo/core/arti!476
| * Upgrade to AES 0.8Nick Mathewson2022-04-261-0/+4
| | | | | | | | | | | | | | | | Now that we require Rust 1.56, we can upgrade to AES 0.8. This forces us to have some slight API changes. We require cipher 0.4.1, not cipher 0.4.0, since 0.4.0 has compatibility issues with Rust 1.56.
* | Merge branch 'download-schedule' into 'main'Nick Mathewson2022-04-261-0/+6
|\ \ | |/ |/| | | | | DownloadSchedule: Introduce Builder See merge request tpo/core/arti!473
| * DirMgrConfig: Rename two fields that contained a _configIan Jackson2022-04-261-0/+1
| | | | | | | | This entire struct is config. This is otiose.
| * Document breaking changes to DownloadSchedule etc.Ian Jackson2022-04-261-0/+5
| |
* | Merge branch 'main' into 'msrv_1_56'Nick Mathewson2022-04-261-0/+9
|\| | | | | | | | | | | # Conflicts: # crates/tor-config/Cargo.toml # crates/tor-dirmgr/src/state.rs # doc/semver_status.md
| * Add semver note about added macros in tor-condfigIan Jackson2022-04-251-0/+4
| |
| * Add semver notes for AuthorityListBuilder, PredictedPortsListBuilderIan Jackson2022-04-251-0/+2
| | | | | | | | These were omitted in the earlier commits.
| * Fix error return type of AuthorityBuilderIan Jackson2022-04-251-0/+4
| |
* | Update semver_status to note that all crates have had a breaking change.Nick Mathewson2022-04-251-0/+5
|/
* logfiles: Introduce LogfileListConfigBuilderIan Jackson2022-04-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | In https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/462#note_2797697 we decided not to do this. However, having looked again at the way the FallbackList works, I think there is a lot of value in making these two things (and anything else like them[1]) as similar as possible. [1] At least PreemptiveCircuitConfig.initial_predicted_ports and NetworkConfig.authorities need the same treatment, and perhaps also GuardUsage.restrictions (although there is no GuardRestrictionBuilder). In the irc discussion I imagined `LogfilesConfigBuilder` as opposed to `LogfileConfigBuilder` (differing only in the `s`) which would be bad, but we can use `List` instead. We do *not* need to abstract away the validated version of the config. Providing a type alias helps the derive_builder sub_builder DTRT without needing special overrides. I have split this commit so that we can drop it, if we conclude it's not wanted.
* fallback list: Introduce and use FallbackListBuilderIan Jackson2022-04-221-0/+4
| | | | | | | | | Now the network fallbacks configuration wants to Deserialize a Vec<FallbackDirBuilder>, rather than validated Vec<FallbackDir>. Methods on FallbackListBuilder are as per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/462#note_2797697 mutatis mutandi for the fact that this struct has only fallbacks in it.
* Fix wording in FAQSamanta Navarro2022-04-201-2/+2
|
* Fix typosSamanta Navarro2022-04-201-1/+1
| | | | Typos found with codespell.
* circmgr: Remove now-unused scheduled entry points.Nick Mathewson2022-04-121-0/+1
| | | | | Now that we have TaskSchedule, we don't need to expose these any longer.
* Implement a better clock skew estimator.Nick Mathewson2022-04-111-0/+6
| | | | | | | | This time, our estimator discards outliers, takes the mean of what's left, and uses the standard deviation to try to figure out how seriously to take our report of skew/not-skew. These estimates are still not actually used.
* ChanMgr: Return provenance information from get_or_launchNick Mathewson2022-04-071-0/+1
| | | | | | We need this since we want to report certain conditions only when they happen on a new channel, not if we observe them on a preexisting channel.
* chanmgr: bubble ClockSkew up through the Error object.Nick Mathewson2022-04-071-0/+5
| | | | | | | | Fortunately, we don't need a separate type here: authenticated clock skew can only come attached to a `tor_proto::Error`. We also remove skew from `tor_proto::Error::HandshakeCertsExpired`, since it would now be redundant.
* Channel: Expose our view of whether the clock is skewed, and the ageNick Mathewson2022-04-071-0/+4
| | | | | | | | of a channel. At first I wanted to have this information not be a part of channels at all, but it is a fairly tiny amount of data, and the alternatives are pretty crufty.
* Merge branch 'main' into 'separate_dir_status'Nick Mathewson2022-04-061-2/+6
|\ | | | | | | # Conflicts: # doc/semver_status.md
| * Merge branch 'main' into 'retriable'Nick Mathewson2022-04-051-0/+8
| |\ | | | | | | | | | # Conflicts: # doc/semver_status.md
| * | circmgr: Avoid a race condition in circuit usage restrictionNick Mathewson2022-04-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were treating restrict_mut() failures as internal errors, and using internal errors to represent them. But in fact, these failures are entirely possible based on timing. Here's how it happens: * Two different circuit requests arrive at the same time, and both notice a pending circuit that they could use. * The pending circuit completes; both pending requests are notified. * The first request calls restrict_mut(), and restricts the request in such a way that the second couldn't use it. * The second request calls restrict_mut(), and gets a failure. Because of this issue, we treat these errors as transient failures and just wait for another circuit. Closes #427. (This is not a breaking API change, since `AbstractSpec` is a crate-private trait.)
* | | Add RetrySchedule::reset()Nick Mathewson2022-04-041-1/+4
| |/ |/| | | | | | | | | | | | | | | | | | | Previously the code would do stuff like ``` schedule = RetrySchedule::new(INITIAL_DELAY); ``` which is needlessly verbose, since the schedule already keeps track of its initial delay.
* | rtmock: add the ability to make a connection time out.Nick Mathewson2022-04-021-0/+5
| |
* | socksproto: remove some unused accessors.Nick Mathewson2022-04-021-0/+3
|/
* Clean out semver_status.mdNick Mathewson2022-04-011-98/+1
|
* Implement Ord for Ed25519Identity.Nick Mathewson2022-03-301-0/+1
|
* Update semver_status from recent round of movement.Nick Mathewson2022-03-301-0/+4
|
* Move fallback.rs into guardmgr.Nick Mathewson2022-03-301-0/+8
| | | | | | | This is the logical place for it, I think: the GuardMgr's job is to pick the first hop for a circuit depending on remembered status for possible first hops. Making this change will let us streamline the code that interacts with these objects.
* Make daemon tasks self-contained; introduce NetDirProvidereta2022-03-301-0/+1
| | | | | | | | | | | | | | | The various background daemon tasks that `arti-client` used to spawn are now handled inside their respective crates instead, with functions provided to spawn them that return `TaskHandle`s. This required introducing a new trait, `NetDirProvider`, which steals some functionality from the `DirProvider` trait to enable `tor-circmgr` to depend on it (`tor-circmgr` is a dependency of `tor-dirmgr`, so it can't depend on `DirProvider` directly). While we're at it, we also make some of the tasks wait for events from the `NetDirProvider` instead of sleeping, slightly increasing efficiency.
* Merge branch 'netinfo-clock-skew' into 'main'Nick Mathewson2022-03-231-0/+11
|\ | | | | | | | | tor-proto: add the ability to learn clock skew from NETINFO cells See merge request tpo/core/arti!410
| * tor-proto: better errors when handshake fails due to untimely certsNick Mathewson2022-03-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now check the handshake certificates unconditionally, and only report them as _expired_ as a last resort. (Rationale: if somebody is presenting the wrong identity from a year ago, it is more interesting that they are presenting the wrong ID than it is that they are doing so with an expired cert. We also now report a different error if the certificate is expired, but its expiration is within the range of reported clock skew. (Rationale: it's helpful to distinguish this case, so that we can blame the failure on possible clock skew rather than definitely attributing it to a misbehaving relay.) Part of #405.
| * tor-proto: add a backend to detect reported clock skew.Nick Mathewson2022-03-231-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NETINFO cells, which are sent in every handshake, may contain timestamps. This patch adds an accessor for the timestamp in the Netinfo messages, and teaches the tor-proto code how to compute the minimum clock skew in the code. The computation isn't terribly precise, but it doesn't need to be: Tor should work fine if your clock is accurate to within a few hours. This patch also notes a Y2038 problem in the protocol: see torspec#80. Part of #405.