summaryrefslogtreecommitdiff
path: root/Cargo.toml
Commit message (Collapse)AuthorAgeFilesLines
* Add the skeleton of a tor-ptmgr crateNick Mathewson2022-09-231-0/+1
| | | | | When complete, this crate will handle launching and using pluggable transports on demand.
* tor-congestion: implement the RTT estimation algorithm from prop#324eta2022-08-111-0/+1
| | | | | | | | | | | This commit implements the round-trip-time estimation algorithm from Tor proposal 324, validating the implementation against the test vectors found in C tor. (Note that at the time of writing, the new test vectors may not be committed to C tor yet, but they will be soon.) This also adds the necessary consensus parameters to `NetParameters`. Some of them have been renamed in order to (hopefully) make them more understandable.
* Revert toplevel part of "Lexically sort Cargo.toml dependencies"Ian Jackson2022-06-081-26/+26
| | | | This reverts one file from commit bfd41ddb5fefe8808c33669c508dde4325808e35.
* Lexically sort Cargo.toml dependenciesOrhun Parmaksız2022-05-281-26/+26
| | | | | | Utilize cargo-sort: https://github.com/DevinR528/cargo-sort Signed-off-by: Orhun Parmaksız <[email protected]>
* Implement a safe-logging facility.Nick Mathewson2022-05-061-0/+1
| | | | | | This is a rough first-cut of an API that I think might help us with keeping limited categories of sensitive information out of our logs. I'll refine it based on experiences with using it.
* Merge branch 'fs-mistrust-v2' into 'main'Nick Mathewson2022-05-031-0/+1
|\ | | | | | | | | Second cut at a fs-mistrust crate. See merge request tpo/core/arti!468
| * Second cut at a fs-mistrust crate.Nick Mathewson2022-05-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This crate is meant to solve #315 by giving a way to make sure that a file or directory is only accessible by trusted users. I've tried to explain carefully (in comments and documentation) what this crate is doing and why, under the assumption that it will someday be read by another person like me who does _not_ live and breathe unix file permissions. The crate is still missing some key features, noted in the TODO section. It differs from the first version of the crate by taking a more principled approach to directory checking: it emulates the path lookup process (reading symlinks and all) one path change at a time, thus ensuring that we check every directory which could enable an untrusted user to get to our target file, _or_ which could enable them to get to any symlink that would get them to the target file. The API is also slightly different: It separates the `Mistrust` object (where you configure what you do or do not trust) from the `Verifier` (where you set up a check that you want to perform on a single object). Verifiers are set up to be a bit ephemeral, so that it is hard to accidentally declare that _every_ object is meant to be readable when you only mean that _some_ objects may be readable.
* | Merge branch 'derive-builder-git-fixup' into 'main'eta2022-04-271-8/+0
|\ \ | | | | | | | | | | | | derive_builder: Use git dep everywhere, rather than cargo patch See merge request tpo/core/arti!477
| * | derive_builder: Use git dep everywhere, rather than cargo patchIan Jackson2022-04-271-8/+0
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `[patch]` approach causes the tree not to build when used as a dependency, unless the `[patch]` is replicated into the depending project. Instead, replace our `derive_builer =` dependencies with a reference to a specific git commit: perl -i~ -pe 'next unless m/^derive_builder/; s#"(0\.11\.2)"#{ version = "$1", git = "https://github.com/ijackson/rust-derive-builder", rev = "ba0c1a5311bd9f93ddf5f5b8ec2a5f6f03b22fbe" }#' crates/*/Cargo.toml Note that the commitid has changed. This is because derive_builder is in fact a workspace of 4 crates. 3 of them are of interest to arti itself (the 4th exists only for testing). So the same "add git revision" treatment had to be done to the `derive_builder` and `derive_builder_macro` crates. Each dependency edge involves a new commit in the derive_builder workspace, since we can't create a git commit containing its own commitid. (We want to use commits, rather than a branch, so that what we are depending on is actually properly defined, and not subject to the whims of my personal github namespace.) There are no actual code changes in derive_builder.
* / Fix grammar and typosSamanta Navarro2022-04-271-2/+2
|/
* Use git source for derive_builder for now, for sub_builder featureIan Jackson2022-04-211-3/+7
| | | | | | | | | | | | | | | This commitid is the current head of my MR branch https://github.com/colin-kiegel/rust-derive-builder/pull/253 https://github.com/ijackson/rust-derive-builder/tree/field-builder Using the commitid prevents surprises if that branch is updated. We will require this newer version of derive_builder. The version will need to be bumped again later, assuming the upstream MR is merged and upstream do a release containing the needed changes. We will need the new version of not only `derive_builder_core` (the main macro implementation) but also`derive_builder` for a new error type.
* Cargo.toml: Edit crate list to reflect dependenciesNick Mathewson2022-04-011-2/+2
|
* derive_builder: Switch to upstream 0.11Ian Jackson2022-03-161-3/+3
| | | | | | | | | This has the different syntax for builder field attributes than what I originally proposed in my MR, and which therefore is in the pinned branch. My upstream MR for the field attributes feature was morged: https://github.com/colin-kiegel/rust-derive-builder/issues/239
* Use git source for derive_builder for now, for attrs featureIan Jackson2022-03-071-0/+4
| | | | | | | | | | | | | | We are going to want to specify custom attributes on fields of the builder struct. This feature was missing from derive_builder. This commitid is the current head of my MR branch https://github.com/colin-kiegel/rust-derive-builder/pull/237 https://github.com/ijackson/rust-derive-builder/tree/builder-field-attrs Using the commitid prevents surprises if that branch is updated. We will require this newer version of derive_builder. The version will need to be bumped again later, assuming the upstream MR is merged and upstream do a release containing the needed changes.
* Merge branch 'educe-traits' into 'main'Ian Jackson2022-03-041-0/+1
|\ | | | | | | | | Replace many manual trait impls with use of educe See merge request tpo/core/arti!375
| * Introduce tor-basic-utilsIan Jackson2022-03-041-0/+1
| | | | | | | | Empty crate right now
* | arti-testing: Initial implementationNick Mathewson2022-03-031-0/+1
|/ | | | | | | | | | | | | | | | | This commit adds a new program to try to implement the ideas behind experimentation in arti#329. In particular, it tries to implement basic client "can I bootstrap and connect" functionality testing, with a lot of instrumentation, and support for breaking things. So far, the instrumentation is limited to counting TCP bytes and connections, and counting events. Still, this is enough to measure behavior on some of the incorrect-clock tests. NOTE: For now, you are _required_ to pass in an explicit configuration, in hopes that this will lead you to override your storage directories for doing specific experiments.
* arti-hyper: empty crate skeletonIan Jackson2022-02-231-0/+1
|
* tor-error: Skeleton for new crateIan Jackson2022-02-041-0/+1
| | | | | | As per doc/Errors.md. Currently there are no error kinds. Some will be added as we go along.
* Introduce an experimental benchmarking utility for Artieta2021-12-161-0/+1
| | | | | | | | | | | | | | | | | | | The new `arti-bench` crate does a simple end-to-end benchmark test embedding Arti: it generates some random data (of configurable amount, depending on command-line parameters), and then sends said data back and forth via Arti (which should be configured to use a local Chutney network). Additionally, the benchmark can also be run via a local SOCKS5 server (in order to benchmark the performance via a local Chutney node, for comparison). The `tests/chutney/arti-bench.sh` sets up and tears down Chutney as required to make this work. This is very much a first cut; there are many things that should eventually get added, such as support for multiple connections, JSON output capabilities, running multiple tests, ...
* Merge commit '98f38dc' (arti!131) into HEADeta2021-11-221-0/+1
|\ | | | | | | | | This commit message totally gives away the cursed way in which I use git. branches? what are those?
| * Initial cut at a typed event framework for arti (arti#230).eta2021-11-221-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements a basic typed event broadcast mechanism, as described in arti#230: consumers of the new `tor-events` crate can emit `TorEvent` events, which others can consume via the `TorEventReceiver`. Under the hood, the crate uses the `async-broadcast` (https://github.com/smol-rs/async-broadcast) crate, and a `futures::mpsc::UnboundedSender` for the event emitters; these are glued together in the `EventReactor`, which must be run in a background thread for things to work. (This is done so event sending is always cheap and non-blocking, since `async-broadcast` senders don't have this functionality.) Additionally, the `TorEventKind` type is used to implement selective event reception / emission: receivers can subscribe to certain event types (and in fact start out receiving nothing), which filters the set of events they receive. Having no subscribers for a given event type means it won't even be emitted in the first place, making things more efficient.
* | Move top-level configuration downwards from `arti` to `arti-config`.Nick Mathewson2021-11-181-1/+2
|/ | | | | | | | To do this at all neatly, I had to split out `tor-config` from `arti-config` again, and putting the lower level stuff (paths, builder errors) into tor-config. I also changed our use of derive_builder to always use a common error type, to avoid error type proliferation.
* Tune the 'profile.release' options for a smaller compile size.Nick Mathewson2021-11-081-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | By enabling link-time optimization, setting 'opt-level=s', and setting compilation-units=1, we can get a much smaller download size, which is one of our objectives. Making these changes reduces the binary size for me (on x86_64) by about 42%. If you also run "strip --strip-debug" on the resulting binary, the resulting size is 55% smaller than the original binary size. These effects persist if you compress the binary. Supposing that we use xz compression, these options make save 32% of compressed binary size. If we also "strip --strip-debug" before compressing, the compressed binary saves 43% from the original binary size. With all of these options applied, on x86_64 linux with xz compression, we're at a nice 1.5 MiB download. If we statically link to openssl and sqlite, we're still only at a 2.8 MiB download. There is a build time cost to these changes: for me, it comes to a 10%-25% build time increase. This is part of arti#172.
* Rename tor_client/arti_tor_client to arti_client.Nick Mathewson2021-10-211-1/+1
| | | | | | Solves a name conflict with the existing tor_client create. Closes #130.
* Initial backend implementation for guard node manager.Nick Mathewson2021-10-071-0/+1
| | | | | | | There are some missing parts here (like persistence and tests) and some incorrect parts (I am 90% sure that the "exploratory circuit" flag is bogus). Also it is not integrated with the circuit manager code.
* Move all crates into a `crates` subdirectory.Nick Mathewson2021-08-271-26/+26
| | | | | This will cause some pain for now, but now is really the best time to do this kind of thing.
* Initial persistent-state-manager code.Nick Mathewson2021-08-061-0/+1
| | | | | | This commit defines a crate (tor-persist) that describes an abstract key-value store using serde, plus an on-disk implementation using Toml and fslock.
* Toposort the workspace members list.arti-v0.0.0Nick Mathewson2021-06-241-1/+4
|
* Remove anyhow dependency from tor-retry, and rename it to retry-errorNick Mathewson2021-06-171-1/+1
| | | | Now RetryError is parameterized on an underlying error type.
* Use macros and types to improve handling of Netdir parameters.Nick Mathewson2021-05-251-0/+1
| | | | (Squashed from typed-netdir-params)
* Switch to v2 feature resolver.Nick Mathewson2021-05-051-0/+2
|
* Split mocking parts of rtcompat into new rtmock crate.Nick Mathewson2021-05-031-0/+1
| | | | | Since these parts are testing-only, let's take steps to make sure we don't ship them in production by accident.
* Replace tor-decompress with async-compression crate.Nick Mathewson2021-04-131-1/+0
| | | | This lets us simplify tor-dirclient a fair bit. Closes #79.
* Move our command-line interface into a new crate called "arti".Nick Mathewson2021-03-171-0/+1
| | | | Closes #106
* Add tor-decompress to top-level Cargo.tomlNick Mathewson2021-03-041-0/+1
|
* Rename client-demo to tor-client.Nick Mathewson2021-02-021-1/+1
|
* Start a 'tor-config' crateNick Mathewson2021-02-011-0/+1
| | | | | | This crate is mainly intended to wrap the config.rs code if necessary, and to give a way for interacting with it on the command line.
* Initial work on client-side consensus diff code.Nick Mathewson2020-12-161-0/+1
|
* Add a "RetryError" to capture the idea of multiple failed attempts.Nick Mathewson2020-12-121-0/+1
| | | | | | When we try to do something a few times and it fails each time, it can be a good idea to remember why the individual failures happened.
* Initial pass on directory-manager code.Nick Mathewson2020-11-191-0/+1
| | | | | | | | This code can now bootstrap from the network, cache the results, and reload from cache. There's lots more work to do here, including a big pile of tidying and refactoring and testing and documentation.
* Start a directory client implementationNick Mathewson2020-11-161-1/+2
| | | | | | | | It can send a GET request on a circuit, get an answer, and decompress it with zlib. It will need documentation and tests eventually, as well as serious refactoring.
* Isolate async_std usage in a new tor_rtcompat crate.Nick Mathewson2020-11-111-0/+1
| | | | | Like tor_llcrypto, this crate is meant to expose only the part of other crates (in this case, a async runtime crate) that we use.
* rename tor_socks -> tor_socksproto.Nick Mathewson2020-11-041-1/+1
|
* Add a SOCKS protocol implementation. Needs tests and docsNick Mathewson2020-11-041-0/+1
|
* Add a new circuit-manager crate and move path selection there.Nick Mathewson2020-11-021-0/+1
|
* Implement a channel-manager type to get or launch channels on request.Nick Mathewson2020-10-301-0/+1
|
* Split the cell-handling parts of tor-proto into a new crate.Nick Mathewson2020-09-261-0/+1
|
* New "linkspec" module to encapsulate info needed to connect/extend.Nick Mathewson2020-09-081-0/+1
|
* Create a stub for a minimal demo client program.Nick Mathewson2020-09-081-0/+1
| | | | | | | | For now, it's set up to just use a chutney network, so I don't cause major drama with the real network. I'll be working on this in parallel with proto and netdir improvements, until it works.