summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | tor-hsclient: Call the mock with the result circuitIan Jackson2023-06-091-0/+5
| | |
* | | tor-hsclient: Define representation of intro point experience dataIan Jackson2023-06-091-3/+44
| | | | | | | | | | | | | | | This is the data structure for recording IPT outcomes and, later, selecting a good IPT to try for a new connection.
* | | tor-hsclient: Implement rendezvous setup, and retry frameworkIan Jackson2023-06-094-6/+477
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This contains code to: * Iterate over introduction points * Make multiple attempts to connect * Apply timeouts to the various phases of each attempt * Establish a rendezvous point * Represent errors that occur during the above It provides places to add: * Implementation of the INTRODUCE1/INTRODUCE_ACK handshake * Reception of RENDEZVOUS2 and actual end-to-end circuit establishment * Recording of the outcome of connection attempts via particular IPTs * Using previous IPT outcome information for selecting IPTs to try * Tests of the new code (although more mocking will probably be needed) Much of this code works with a fixed type ClientCirc rather than going via the Mockable traits. That is wrong, and it will be fixed later.
* | | tor-error: Extend applicability of RemoteNetworkTimeoutIan Jackson2023-06-091-1/+6
| | | | | | | | | | | | | | | We're going to use this for rendezvous completion timeout, which could be due to basically anything.
* | | tor-hsclient: errors: Introduce IntroPtIndexIan Jackson2023-06-092-1/+13
| | | | | | | | | | | | | | | | | | We're going to want to report about rendezvous points in errors. We'll do this by printing the "number" of the intro point in the descriptor.
* | | tor-hsclient: errors: Introduce RendPtIdentityForErrorIan Jackson2023-06-092-0/+11
| | | | | | | | | | | | | | | We're going to want to report about rendezvous points in errors. We'll be using this. And we'll want to convert it from a Relay.
* | | tor-hsclient: Allow dead code for nowIan Jackson2023-06-091-0/+2
| | | | | | | | | | | | The dead code warnings are a nuisance while this file is half-written.
* | | tor-hsclient: Mocks: Add get_or_launch_client_rend to mock poolIan Jackson2023-06-091-0/+19
| | | | | | | | | | | | This has the wrong return type at the moment.
* | | tor-hsclient: Mock trait: use actual HsCircPool in non-mock implIan Jackson2023-06-091-5/+6
| | | | | | | | | | | | The impl was in terms of itself. Sadly, nothing warns about this bug.
* | | tor-hsclient: impl HasKind for InvalidTarget: ..DescriptorValidationFailedIan Jackson2023-06-092-3/+11
| | | | | | | | | | | | | | | | | | This basically always means we couldn't cope with the descriptor. We need to extend the description of OnionServiceDescriptorValidationFailed
* | | tor-error: Introduce define_asref_dyn_std_error and use itIan Jackson2023-06-092-9/+19
| | | | | | | | | | | | | | | This factors out an ad-hoc AsRef impl. We're going to want to reuse this for another error type.
* | | tor-hsclient: Have descriptor_ensure take only &mut data.descIan Jackson2023-06-091-6/+8
| | | | | | | | | | | | | | | | | | It returns a borrow (so whatever is passed remains borrowed) and the next phase is going to need to perhaps mutate other parts of data, so we must pass only what is needed.
* | | tor-hsclient: Move &mut Data out of Context, and pass &Context (fmt)Ian Jackson2023-06-091-9/+1
| | |
* | | tor-hsclient: Move &mut Data out of Context, and pass &ContextIan Jackson2023-06-091-19/+12
| | | | | | | | | | | | | | | | | | Now Context can be usefully shared, across different threads/tasks/functions, so long as only one of them needs to modify `Data`.
* | | tor-hsclient: export InvalidTargetIan Jackson2023-06-091-0/+1
| | | | | | | | | | | | It's going to appear in our public errors.
* | | tor-hsclient: Add a TODO for InvalidTarget errorIan Jackson2023-06-091-0/+4
| | |
* | | Merge branch 'report-trait-doc-fix' into 'main'Alexander Færøy2023-06-092-0/+107
|\ \ \ | | | | | | | | | | | | | | | | Expand arti-client docs to include error reporting section See merge request tpo/core/arti!1213
| * | | Rephrase error handling to reportingSaksham Mittal2023-06-081-2/+2
| | | |
| * | | Add error handling section in READMESaksham Mittal2023-06-081-0/+40
| | | |
| * | | Add separate example with ReportSaksham Mittal2023-06-081-0/+67
| |/ /
* | | Merge branch 'warning' into 'main'Alexander Færøy2023-06-091-0/+1
|\ \ \ | | | | | | | | | | | | | | | | Fix a silly clippy warning See merge request tpo/core/arti!1226
| * | | Fix a silly clippy warningIan Jackson2023-06-081-0/+1
| |/ / | | | | | | | | | | | | Fixes nailing-cargo +stable clippy -p tor-hsclient --all-features --all-targets
* | | tor-hscrypto: implement Rng.gen() for RendCookieIan Jackson2023-06-092-0/+7
| | |
* | | tor-hscrypto: Break out REND_COOKIE_LENIan Jackson2023-06-091-1/+4
| |/ |/| | | | | We need to reuse this.
* | Merge branch 'hsclient-feature' into 'main'Alexander Færøy2023-06-081-1/+1
|\ \ | | | | | | | | | | | | hs: Fix a feature name in arti-client See merge request tpo/core/arti!1222
| * | hs: Fix a feature name in arti-clientNick Mathewson2023-06-071-1/+1
| | | | | | | | | | | | In arti-client it's called "onion-client", not "hs-client".
* | | Expand docs for NetDirProviderIan Jackson2023-06-081-0/+7
| |/ |/| | | | | | | | | | | | | Apropos a question that arose on IRC, to which I felt the answer wasn't 100% unambiguous. Also, reference the usual implementation (it can't be a link because it's an upward reference).
* | Merge branch 'ipt_to_circtarget' into 'main'Nick Mathewson2023-06-077-1/+158
|\ \ | |/ |/| | | | | Construct a CircTarget from an IntroPointDesc. See merge request tpo/core/arti!1221
| * hsclient: Create a CircTarget from an IntroPointDesc.Nick Mathewson2023-06-073-1/+103
| | | | | | | | | | The main body of this function is written so that we can later use it to create a CircTarget from an INTRODUCE2 message.
| * netdir, netdoc: Add accessors for protocol version status.Nick Mathewson2023-06-064-0/+55
| | | | | | | | | | | | | | | | | | | | | | The consensus includes a listing for clients and for relays, saying which protocol versions are _required_ for participation on the network, and which versions are _recommended_. We have been parsing this, but not yet exposing it. This commit adds accessors to expose it, since we'll need that in order to create CircTargets for introduction points and rendezvous points.
* | Merge branch 'access' into 'main'Alexander Færøy2023-06-061-4/+69
|\| | | | | | | | | hsdesc docs: Provide some accessors See merge request tpo/core/arti!1220
| * hsdesc: Add minimal set of accessors for HsDesc and IntroPointDescIan Jackson2023-06-051-0/+65
| |
| * hsdesc docs: Don't imply that a thing has been done, which hasn't yetIan Jackson2023-06-051-1/+1
| |
| * hsdesc docs: Use the definite articleIan Jackson2023-06-051-3/+3
| | | | | | | | | | These are (I hope) the only key matching the description. If they're not, the description needs to be expanded.
* | Merge branch 'remove_arrayref' into 'main'Nick Mathewson2023-06-0616-55/+64
|\ \ | | | | | | | | | | | | | | | | | | Remove use of arrayref Closes #872 See merge request tpo/core/arti!1214
| * | tor-cell: remove use of arrayrefNick Mathewson2023-06-013-7/+16
| | | | | | | | | | | | Closes #872
| * | tor-llcrypto: remove use of arrayrefNick Mathewson2023-06-014-19/+15
| | |
| * | tor-netdoc: remove use of arrayref.Nick Mathewson2023-06-012-4/+7
| | |
| * | tor-proto: Remove use of arrayref.Nick Mathewson2023-06-013-5/+10
| | |
| * | tor-bytes: Remove use of arrayrefNick Mathewson2023-05-254-20/+16
| | | | | | | | | | | | | | | Part of #872: Now that const generics are in, we have better ways to express converting slices into array-references.
* | | arti: Interpret socks request to mean "lookup an RPC session"Nick Mathewson2023-06-052-14/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | The actual decoding here is just a placeholder. The important part is that we can get either a (SessionId, StreamId) tuple out of the request, or we treat it as part of an isolation token. This commit has a few TODOs for additional things that we'll need in order to build out our design.
* | | arti: Move SOCKS code for building StreamPrefs and getting a TorClient.Nick Mathewson2023-06-051-12/+25
| | |
* | | arti: Add an alias in the SOCKS code for per-conn isolatino info.Nick Mathewson2023-06-051-4/+10
| | | | | | | | | | | | This enables some small simplifications.
* | | RPC: Note a possible API change in RpcMgr::new.Nick Mathewson2023-06-051-0/+4
| | |
* | | RPC: Make Session objects get a GlobalId.Nick Mathewson2023-06-051-1/+7
| | |
* | | RPC: tell the `arti` SOCKS code about an RpcMgr object.Nick Mathewson2023-06-053-23/+78
| | | | | | | | | | | | | | | It will use this to find which TorClient to use when opening a stream.
* | | RPC: Give out and accept GlobalIds for appropriate objects.Nick Mathewson2023-06-053-11/+86
| | |
* | | RPC: Let objects declare that they need a GlobalId.Nick Mathewson2023-06-051-1/+17
| | |
* | | RPC: Implement a "global identifier" for non-session-bound IDsNick Mathewson2023-06-055-8/+299
| | | | | | | | | | | | | | | | | | | | | These identifiers are actually only "global" with respect to a given `RpcMgr`, but they should not be forgeable or reusable across RpcMgr objects. We're going to use them so that we have a kind of identifier for `TorClient`s that we can expose to SOCKS.
* | | rpc: Slightly refactor GenIdx encoding.Nick Mathewson2023-06-053-17/+27
| | |