summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | proto: Allow padding in all channel message setsDavid Goulet2025-08-211-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First of all, VPADDING has been added in link protocol version 3 so it was missing from v4. Second, after closely looking at C-tor and the spec, it appears that we allow VPADDING at any point on a channel which should simply be silently dropped. Any number in any order. Third, couple sets were missing the PADDING cell which is only allowed on an open channel. Signed-off-by: David Goulet <[email protected]>
* | | | | | | Merge branch 'ticket_2124' into 'main'Nick Mathewson2025-08-214-1/+4
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | hsservice: Move derive_more::From out of internal_prelude. Closes #2124 See merge request tpo/core/arti!3169
| * | | | | | | hsservice: Move derive_more::From out of internal_prelude.Nick Mathewson2025-08-194-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes an error from nightly. The trouble is that with nightly, there's a now a [derive macro for From][issue]. That doesn't cause a conflict when we `use derive_more::From`, but it _does_ cause a conflict when we import `derive_more::From` via `use internal_prelude::*`. So as a solution, we just import `derive_more::From` explicitly. Closes #2124 [issue]: https://github.com/rust-lang/rust/pull/144922
* | | | | | | | Merge branch 'drop-dependency-proxy' into 'main'gabi-2502025-08-211-19/+10
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | ci: drop dependency proxy experiment See merge request tpo/core/arti!3175
| * | | | | | | ci: drop dependency proxy experimentJérôme Charaoui2025-08-211-19/+10
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the dependency proxy didn't work as well as we hoped (tpo/tpa/team#42089) and it also fix all rate-limiting issues from dockerhub since a lot of contributors were bypassing the proxy because of insufficient credentials from now on pulls from "docker.io" will go through a new pull-though cache deployed by tpa, similar to what osuosl folks are using successfully with their own ci runners
* | | | | | | Merge branch 'smol-add-impl-in-tor-rtcompat' into 'main'opara2025-08-2118-36/+551
|\ \ \ \ \ \ \ | |_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | smol: Implement smol in tor-rtcompat See merge request tpo/core/arti!2986
| * | | | | | smol: Implement smol in tor-rtcompatNiel Duysters2025-08-2118-36/+551
| | | | | | |
* | | | | | | Merge branch 'fmt-match' into 'main'David Goulet2025-08-201-46/+26
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tor-proto: Simplify some match statements See merge request tpo/core/arti!3173
| * | | | | | | tor-proto: simplify some match statementsSteven Engler2025-08-201-46/+26
|/ / / / / / /
* | | | | | | Merge branch 'ticket1597_05-norelay' into 'main'David Goulet2025-08-2022-239/+1461
|\ \ \ \ \ \ \ | |_|_|/ / / / |/| | | | | | | | | | | | | | | | | | | | Refactor channel cell handling for channel authentication (v2) See merge request tpo/core/arti!3158
| * | | | | | proto: Change (crate) to (super) for all objects in msg.rsDavid Goulet2025-08-201-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Cleanup allow(unused)David Goulet2025-08-202-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | | | | | cargo: Make it that tor-keymgr is required for tor-chanmgrDavid Goulet2025-08-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Unit tests for channel handlerDavid Goulet2025-08-201-1/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Rename OutboundClientHandshakeDavid Goulet2025-08-202-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the specification terminology which is also the same for ChannelType. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Make the OutboundClientHandshake use new cell handlerDavid Goulet2025-08-207-212/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the ChannelFrame<> for the entirety of the outbound client handshake that is the ClientInitiator channel type. With this change, the codec.rs code is not needed anymore along its CodecError as well which has been normalized onto the crate::Error instead in order to simplify error handling and avoid duplication of error types. Unit tests have been modified to reflect this change of what can be done with a channel frame. Also renamed to focus on client behavior. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Add helper functions/type for cell handlingDavid Goulet2025-08-201-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This type and functions will be used in the handshake process in future commits. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Add channel cell handlerDavid Goulet2025-08-202-0/+562
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The handler.rs file contains a generic "ChannelCellHandler" which is split into three different handler depending of the channel state (new, handshaking or open). These handlers implement Encoder/Decoder so we can give a ChannelCellHandler to a asynchronous_codec::Framed along a TLS stream. That cell handler is also in charge of tracking the CLOG/SLOG (see tor-spec), running digest of cells seen, which is used to authenticate a channel for the Relay <-> Relay case. This ChannelCellHandler auto transitions as the setters function are used. The handshake code will use this to advance the handler. Each handler uses a MessageFilter from msg.rs in order to allow or not to return the message. A keen eye will notice that we can avoid encoding a message if we don't need but we will decode all possible messages and only then allow it or not. The channel cell handler is not used at this commit. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Add message filtering to restricted message setsDavid Goulet2025-08-201-2/+361
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the code in msg.rs to be able to filter an inbound or outbound message on a channel. Each link protocol version implement a "is_allowed()" which is quite verbose and tests each possibilities for human readability. Then, we have several small struct/enum that are used to describe how a message is filtered. It is still unused at this commit. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Implement a From<std::io::Error> for ErrorDavid Goulet2025-08-201-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To be able to return a crate::Error from the Decoded/Encoder trait, it needs to implement this conversion. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | cell: Add helper functionsDavid Goulet2025-08-201-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add is_known_cmd() to the restricted_msg!() macro which can be used to learn if a specific ChanCmd is part of the restricted set or not. Then add a simple function to get the link protocol version from a channel codec. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Add restricted channel message setsDavid Goulet2025-08-202-3/+211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the msg.rs file containing all the allowed message sets based on the channel type and direction. They are also namespaced by link protocol version. Unused at this commit. They will be used by the channel reactor along the channel type and link protocol version in order to know if the message is allowed or not. See is_allowed() helper function in this commit. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | proto: Add ChannelType enumDavid Goulet2025-08-204-11/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ChannelType indicates the type of channel in order to dictate which message is allowed on it. The value use the Initiator and Responder terminology from tor-spec documents. At this commit, we only have client channel meaning the "ClientInitiator" type. In future commits, the channel type will be used by the channel reactor to restrict which message is allowed or not. Part of #1597 Signed-off-by: David Goulet <[email protected]>
| * | | | | | chan: Rename channel launch to launch_clientDavid Goulet2025-08-203-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | | | | | chanmgr: Add KeyMgr to channel builderDavid Goulet2025-08-2010-5/+23
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is so a relay can build authenticated channels. Several keys/cert are required for this that are within the key manager. Signed-off-by: David Goulet <[email protected]>
* | | | | | Merge branch 'python-fixes' into 'main'Jim Newsome2025-08-202-5/+5
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | A few python CI fixes See merge request tpo/core/arti!3168
| * | | | | | Fix a type warning in postprocess_coverage_htmlNick Mathewson2025-08-191-1/+1
| | | | | | |
| * | | | | | Run black to fix check_doc_features format.Nick Mathewson2025-08-191-4/+4
| | |/ / / / | |/| | | |
* | | | | | Merge branch 'document-rustls-provider-choice' into 'main'Nick Mathewson2025-08-202-3/+25
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Document why we are using ring with rustls See merge request tpo/core/arti!3170
| * | | | | | Document why we are using ring with rustlsNick Mathewson2025-08-192-3/+25
|/ / / / / / | | | | | | | | | | | | | | | | | | See #1977, #2122.
* | | | | | Merge branch 'ticket_2121' into 'main'Nick Mathewson2025-08-191-0/+49
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a few unit tests for create_unbootstrapped_async. Closes #2121 See merge request tpo/core/arti!3167
| * | | | | Add a few unit tests for create_unbootstrapped_async.Nick Mathewson2025-08-191-0/+49
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | Closes #2121 Co-Authored-by: thesw4rm
* | | | | Merge branch 'rename-ns-to-plain' into 'main'opara2025-08-1911-54/+69
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Use "plain" rather than "ns" for a full (unflavoured) consensus See merge request tpo/core/arti!3164
| * | | | | tor-netdoc: network status: fix docs features suppressionsIan Jackson2025-08-181-1/+5
| | | | | |
| * | | | | tor-netdoc: Replace "ns" with "plain" for unflavoured consensusesIan Jackson2025-08-181-1/+3
| | | | | |
| * | | | | tor-netdoc: Provide some compatibility aliasesIan Jackson2025-08-181-0/+13
| | | | | |
| * | | | | tor-netdoc: Rename ns-consensus to plain-consensusIan Jackson2025-08-189-20/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ns-consensus doesn't seem to have ever been released. This is part of abolishing the use of "ns" to mean "plain".
| * | | | | tor-netdoc: network status: Rename Ns* to Plain* in macro outputIan Jackson2025-08-183-17/+13
| | | | | | | | | | | | | | | | | | | | | | | | This is part of abolishing the use of "ns" to mean "plain".
| * | | | | tor-netdoc: network status: Rename NS_* test data consts to PLAIN_*Ian Jackson2025-08-181-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | This is part of abolishing the use of "ns" to mean "plain".
| * | | | | tor-netdoc: Rename ConsensusFlavor::Ns to ConsensusFlavor::PlainIan Jackson2025-08-184-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | This is part of abolishing the use of "ns" to mean "plain".
| * | | | | tor-netdoc: netstatus: Replace NSCON with PLAIN in parsing rulesIan Jackson2025-08-181-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is part of abolishing the use of "ns" to mean "plain". And edit a few docs lines.
* | | | | | Merge branch 'flow-ctrl-note' into 'main'opara2025-08-191-0/+29
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | tor-proto: Add comments about buffer sizes to `CC_XOFF_CLIENT` See merge request tpo/core/arti!3156
| * | | | | | tor-proto: add comments to `CC_XOFF_CLIENT`Steven Engler2025-08-181-0/+29
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This tries to explain that the amount of incoming data we choose to buffer on an arti stream doesn't really matter for arti's socks proxy, since the amount of data buffered by the kernel is significantly higher.
* | | | | | Merge branch 'circ-react-report' into 'main'opara2025-08-188-47/+159
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tor-error,arti: Support tracing fields in the `_report!` macros Closes #2096 and #2116 See merge request tpo/core/arti!3142
| * | | | | | tor-error: allow only error given to `_report!` macrosSteven Engler2025-08-181-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful when you create an `internal!` error and then immediately report it. If the `_report!` macro also requires a message, then you need to provide two messages for the error, which doesn't always make sense. This is already possible anyways with `warn_report!(e,)`. Now you don't need the comma.
| * | | | | | misc: cleanup now that `_report!` macros support fieldsSteven Engler2025-08-184-7/+5
| | | | | | |
| * | | | | | tor-proto: report tunnel/channel id as a fieldSteven Engler2025-08-182-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This restores the pre-374889d34aa0 behaviour.
| * | | | | | arti: log errors using `tor_error::ErrorReport`Steven Engler2025-08-181-1/+14
| | | | | | |
| * | | | | | arti: log error fields lastSteven Engler2025-08-182-0/+99
| | | | | | |
| * | | | | | tor-error: update `_report!` macros to support tracing fieldsSteven Engler2025-08-181-38/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This requires that we put the error in a field. There are two issues that we'll fix in the next two commits: 1. Errors are no longer formatted with `ErrorReport`. 2. Errors will be in the first field, but long (or multiline) error messages will cause other fields to be pushed to the end where they're harder to find.