aboutsummaryrefslogtreecommitdiff
path: root/crates/arti-client
Commit message (Collapse)AuthorAgeFilesLines
...
| * | CircMgr: Make CircMgr and HsCircPool generic over builder type.Wesley Aptekar-Cassels2024-09-241-9/+11
| |/ | | | | | | | | | | | | | | | | | | This will allow for testing, as the CircuitBuilder can be replaced with a mocked version. This did require moving some of what was in the CircuitBuilder impl into the AbstractCircuitBuilder type, since Drop implementations can't be specialized, but that's fine, as we'll probably be doing more of that in the future anyways.
* | Merge branch 'abstract-socket-v2' into 'main'Nick Mathewson2024-09-242-47/+14
|\ \ | |/ |/| | | | | | | | | rtcompat: Second attempt at AF_UNIX support Closes #1152 See merge request tpo/core/arti!2437
| * Documentation updates for "NetStreamProvider" renameNick Mathewson2024-09-242-3/+3
| | | | | | | | | | | | Stop referring to TCP streams in its documentation; update other documentation to refer to NetStreamProvider rather than TcpProvider.
| * rtcompat: Rename TcpProvider to NetStreamProvider.Nick Mathewson2024-09-241-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (And similarly rename TcpListener to NetStreamListener, along with their TcpStream/TcpListener associated types.) These types are about to become generic over addresses, and therefore shouldn't be named after TCP. Renaming was done mostly with Rust Analyzer, except for some macros that needed to be hand-edited. (I'll revise the comments in the next commit; this one is all about renaming.)
| * rtcompat: Remove accept() from TcpListenerNick Mathewson2024-09-241-33/+0
| | | | | | | | | | | | | | | | | | | | It's redundant with the incoming() method (which turns the TcpListener into a Stream of connections), and nothing actually used it outside of tests. Removing this method allows us to simplify our TcpListener code a good deal, as can be seen by some of the implementations we removed from our example and testing code.
| * rtcompat: Add an extension trait for building modified RuntimesNick Mathewson2024-09-241-2/+2
| | | | | | | | | | | | | | With this extension trait, we no longer need to construct `CompoundRuntime` directly outside of tor-rtcompat. This in turn will make it a little less painful when we have to add more generics to CompoundRuntime.
* | tor-keymgr: Move keystore config under keystore.primary.Gabriela Moldovan2024-09-231-1/+1
| | | | | | | | | | The keystore settings only configure the *primary* keystore, so they should be under `keystore.primary`.
* | arti: Reinstate the keystore.enabled option.Gabriela Moldovan2024-09-231-3/+3
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a follow-up from !2394 I want to keep the `keystore.enabled` option, because I'm planning on extending `ArtiKeystoreConfig` to support configuring secondary keystores too (currently, the only supported setting is `keystore.kind`, which configures the primary keystore). `keystore.enabled` will disable keystore use altogether (i.e. both primary and secondary). Currently, we only support configuring the "primary" (previously known as "default") keystore, which can be either "native" (the on-disk Arti keystore), or "ephemeral" (an in-memory keystore). To implement #858, we will need to support configuring additional keystores too, so we will need to move to a config of the form ```toml [storage.keystore] # Whether the keystore is enabled. #enabled = "auto" # Configure the primary keystore. [storage.keystore.primary] # The type of primary keystore to use kind = "auto" | "native" | "ephemeral" # Optionally configure C Tor keystores for arti to use. # # Note: The keystores listed here are read-only (keys are only # ever written to the primary keystore, configured in # `storage.keystore.primary`). [[storage.keystore.ctor]] # If the `kind` is `service`, this should be set to the `HiddenServiceDirectory` # of your hidden service. Arti will read `HiddenServiceDirectory/hostname` # and `HiddenServiceDirectory/private_key`. (Note: if your service is running # in restricted discovery mode, you must set the # `[[onion_services."<the nickname of your svc>".restricted_discovery.key_dirs]]` # to `HiddenServiceDirectory/client_keys` # # If the `kind` is `client`, this should be set to `ClientOnionAuthDir` of # your client. If Arti is configured to run as a client (i.e. if it runs in SOCKS # proxy mode), it will read the client restricted discovery keys from this path. path = "/foo/bar" # The type of keystore `path` should be interpreted as kind = "client" | "service" ``` This moves the current keystore settings to `storage.keystore.primary` in preparation for that change.
* arti-client: Update docs to reflect KeystoreSelector renaming.Gabriela Moldovan2024-09-231-3/+3
|
* tor-keymgr: Rename the primary keystore for clarity.Gabriela Moldovan2024-09-231-6/+6
| | | | | | | | | | Previously, arti's primary keystore was referred to as its "default" keystore. However, "default" is inaccurate here: there is no way to meaningfully override this "default" (the "default" store acts as the main keystore). Throughout the codebase, we query all keystores for keys (including the secondary ones), but only ever write to the default/primary keystore. This is OK for now, because it enables us to have one mutable keystore, and multiple secondary, read-only stores.
* arti-client: added support for constructing ArtiEphemeralKeystore to ↵Morgan2024-09-201-22/+37
| | | | InertTorClient::create_keymgr()
* tor-keymgr: renamed ArtiNativeKeystoreConfig to ArtiKeystoreConfigMorgan2024-09-202-4/+5
|
* arti-client: expose key-mgr/ephemeral-keystore feature in arti-clientMorgan2024-09-201-0/+3
|
* arti-client: Add APIs for rotating service discovery keys.Gabriela Moldovan2024-09-191-0/+80
|
* Merge branch 'msrv-1.75' into 'main'Nick Mathewson2024-09-171-1/+1
|\ | | | | | | | | Bump MSRV from 1.70 to 1.75. See merge request tpo/core/arti!2421
| * Bump MSRV from 1.70 to 1.75.Wesley Aptekar-Cassels2024-09-161-1/+1
| |
* | arti-client: add experimental launch_onion_service_with_hsid() method which ↵Morgan2024-09-151-1/+45
|/ | | | HsIdKeypair
* arti-client: Convert a note to a comment.Gabriela Moldovan2024-09-121-1/+1
| | | | This was supposed to be a comment, not part of the docs.
* arti-client: Remove duplicated documentation.Gabriela Moldovan2024-09-121-42/+4
| | | | | | `TorClient` and `InertTorClient` have a number of identical state-management functions. This makes the `InertTorClient` link to the `TorClient` docs instead of duplicating them.
* arti-client: implemented insert_service_discovery_key and ↵Morgan2024-09-101-1/+168
| | | | remove_service_discovery_key methods
* Merge branch 'relay-err' into 'main'David Goulet2024-09-091-1/+1
|\ | | | | | | | | arti-relay: add and use `Error`/`ErrorDetail` See merge request tpo/core/arti!2392
| * arti-client: minor documentation grammar fixSteven Engler2024-09-051-1/+1
| |
* | Add a TODO RPC call about revising/moving documentationNick Mathewson2024-09-091-0/+6
| |
* | rpc: More specificity surrounding SOCKS-rpc integrationNick Mathewson2024-09-091-2/+24
|/
* memory quota error message: Fix emacs-induced typoIan Jackson2024-09-041-1/+1
|
* Provide a MemoryQuotaTracker in TorClientIan Jackson2024-09-043-2/+15
| | | | Nothing uses this yet.
* arti-client: Unstable cargo feature for exposing info for testingIan Jackson2024-09-042-0/+14
|
* Look for memquota configuration in the TorClient configurationIan Jackson2024-09-041-0/+29
| | | | Tests are not entirely trivial and will come in a moment.
* Add memquota cargo features to arti and arti-clientIan Jackson2024-09-041-0/+4
| | | | | | * In arti, memquota simply turns on in memquota arti-client * In arti-client, add an (unconditional) dependency on tor-memquota, and have the memquota feature turn on the feature in tor-memquota.
* arti-client: replace `convert_override_net_params` with generic `default_extend`Steven Engler2024-09-031-10/+6
|
* Bump all the unstable tor- and arti- crates to 0.22.0.Gabriela Moldovan2024-09-031-25/+25
| | | | | | | | | | Done using: ``` for crate in $(./maint/list_crates | rg '^(tor|arti-)'); do cargo set-version -p $crate 0.22.0 done ```
* Fix formatting issues introduced by fixup-features.Gabriela Moldovan2024-09-031-1/+2
|
* arti: Remove the XXXXs added by fixup-features.Gabriela Moldovan2024-09-031-1/+0
| | | | The `restricted-discovery` feature is reachable from `experimental`.
* Run fixup-features in preparation for release.Gabriela Moldovan2024-09-031-1/+3
|
* Fix typosDimitris Apostolou2024-09-031-1/+1
|
* arti-client: Fix a rustdoc warning.Gabriela Moldovan2024-08-281-1/+1
|
* arti-client: Document the unspecified behavior of create_inert().Gabriela Moldovan2024-08-281-0/+6
| | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2370#note_3066621
* arti-client: Add an InertTorClient for accessing client state (fmt).Gabriela Moldovan2024-08-281-1/+3
|
* arti-client: Add an InertTorClient for accessing client state.Gabriela Moldovan2024-08-283-74/+166
| | | | | | | | | | | | | | | | Implements the `TorClientThatIsntRunning` mentioned in !2314 (see also `doc/dev/notes/keymgr-porcelain.md`), except `TorClientThatIsntRunning` is called `InertTorClient`. This commit is mostly code motion: I've moved the `create_keymgr` function and the impls of `generate_service_discovery_key` and `get_service_discovery_key` from `TorClient` to `InertTorClient`. The `InertTorClient` advertises itself as a handle for accessing the keystores and other persistent state, but it currently only has 2 functions (`generate_service_discovery_key` and `get_service_discovery_key`). I expect it will grow additional functionality in the future.
* arti-client: Move state_dir() to TorClientConfig.Gabriela Moldovan2024-08-282-17/+17
| | | | | I am about to use `state_dir()` outside of `TorClient`, so I am preemptively moving it to `TorClientConfig`.
* Add script for *testing* without any features enabledIan Jackson2024-08-191-0/+3
| | | | | | | | | We can't do this for every crate. I looked at what is now matrix-check to see if I wanted to use any of the code. But it seems too entangled with its particular purpose, and has a lot of embedded knowledge of our crates' features. I found it sufficiently far from what I wanted that I decided on a fresh script.
* Merge branch 'docsrs' into 'main'Jim Newsome2024-08-071-1/+0
|\ | | | | | | | | | | | | Don't need to tell docs.rs to enable `docsrs` cfg. It does it automatically as of https://github.com/rust-lang/docs.rs/pull/2390#event-11664409098 While this change isn't in our MSRV yet, we were only using this when building for docs.rs, where we use the latest anyway. See merge request tpo/core/arti!2308
| * Don't need to tell docs.rs to enable `docsrs` cfgKunal Mehta2024-08-021-1/+0
| | | | | | | | | | It now does it automatically, see <https://docs.rs/about/builds#detecting-docsrs>.
* | arti-client: Move BuilderExt to tor-config.Gabriela Moldovan2024-08-051-23/+3
| | | | | | | | | | `BuilderExt` will soon be used in tor-hsservice too (for configuring the mistrust settings of the client "restricted mode" authorization keys).
* | tor-hsservice: Add a restricted-discovery feature.Gabriela Moldovan2024-08-051-0/+2
|/ | | | | | | Restricted discovery mode is initially going to be gated behind the experimental `restricted-discovery` feature. Part of #1292
* Remove semver.md files post-release.Nick Mathewson2024-08-011-1/+0
|
* Bump versions for tor- and arti- crates to 0.21.0Nick Mathewson2024-08-011-25/+25
| | | | | | | | | | This is the result of: ``` for crate in $( ./maint/list_crates |grep '^\(tor\|arti-\)' ); do cargo set-version -p $crate 0.21.0 done ```
* rpc: Refactor errors part 1: a new RpcMethod trait.Nick Mathewson2024-07-251-12/+6
| | | | | It is no longer necessary to say, for every RPC method, that its error type is RpcError.
* Tweak documentation for wait_for_stop slightly.Nick Mathewson2024-07-231-1/+7
|
* tor-hsservice: Add OnionServiceBuilder, deprecate OnionService::new (fmt).Gabriela Moldovan2024-07-151-10/+8
|