summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | tor-netdoc: ns variety: Provide for flavour-only itemsIan Jackson2025-08-2610-26/+141
| | | |
* | | | tor-netdoc: Fix comments to refer to itemsIan Jackson2025-08-264-4/+4
| | | | | | | | | | | | | | | | It's not just types that can vary by variety.
* | | | tor-netdoc: Fix some out-of-date commentsIan Jackson2025-08-264-4/+4
| | | | | | | | | | | | | | | | We rename the files from per_ to each_.
* | | | tor-netdoc: Add semver notes for these changesIan Jackson2025-08-261-0/+3
| | | | | | | | | | | | | | | | | | | | I don't really see any way to make this less painful for downstreams, so I haven't added compatibility aliases of any kind.
* | | | tor-netdoc: Turn ConsensusHeader into VARIETY::HeaderIan Jackson2025-08-264-185/+185
| | | | | | | | | | | | | | | | It's going to need to vary when we do votes.
* | | | tor-netdoc: Abolish ParseRouterStatus and make several things not pubIan Jackson2025-08-266-37/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The methods in ParseRouterStatus can now be inherent. This starts a cascade of unused stuff, and stuff which doesn't need to be pub any more.
* | | | tor-netdoc: De-duplicate RouterStatusBuilder::buildIan Jackson2025-08-264-38/+17
| | | | | | | | | | | | | | | | | | | | This is now more obviously not needed. We should eventually remove this, or remove finish.
* | | | tor-netdoc: Combine ConsensusRouterStatus and GenericRouterStatusIan Jackson2025-08-2615-106/+82
| | | | | | | | | | | | | | | | Now we only need one type.
* | | | tor-netdoc: Abolish RouterStatus trait in favour of generic methodsIan Jackson2025-08-266-26/+12
| | | | | | | | | | | | | | | | | | | | Our approach to sharing code between md and plain consensuses is now the new "variety" system, not generics.
* | | | tor-netdoc: Remove generics from Consensus and its contentsIan Jackson2025-08-2613-82/+79
| | | |
* | | | tor-netdoc: No longer try to export trait FromRdStringIan Jackson2025-08-261-1/+0
| | | | | | | | | | | | | | | | | | | | This doesn't appear in a tor-netdoc rustdoc build from arti 1.4.6. Shortly, clippy is about to start complaining that it's unreachable pub.
* | | | tor-netdoc: netstatus: Move GenericRouterStatusIan Jackson2025-08-264-150/+151
| | | | | | | | | | | | | | | | | | | | | | | | More code motion. We're going to get rid of this type completely eventually.
* | | | tor-netdoc: netstatus: Move everything variety-specificIan Jackson2025-08-2616-1073/+1101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is much code motion. This splits many types into two. For example, `Conensus` is now`plain::Consensus<RS>` and `md::Consensus<RS>`. We're going to get rid of the generics later in this branch.
* | | | tor-netdoc: Make various types all pub(crate)Ian Jackson2025-08-262-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Header and RouterStatus are going to move to a sibling module, `each_variety.rs`, and the build code has moved too. These modules will all need access to the various stuff. let's just use `pub(crate)` rather than messing about with `pub(super)` etc. It's generally just netdoc field.s
* | | | tor-netdoc: Prepare variety modules for network status documentsIan Jackson2025-08-2612-0/+112
| | | | | | | | | | | | | | | | This is empty modules and scaffolding.
* | | | tor-netdoc: varieties: Provide ns_use_this_varietyIan Jackson2025-08-261-0/+18
| | | |
* | | | tor-netdoc: Fold netstatus::CommonHeader into ConsensusHeaderIan Jackson2025-08-262-85/+50
| | | | | | | | | | | | | | | | | | | | We're going to use ns_variety_definition_macros to support votes, rather than this.
* | | | tor-hscrypto: change redacted `HsId` from "???" to "[…]"Steven Engler2025-08-252-3/+3
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before: ```text INFO tor_hsservice: Generated a new identity for service bar: ???mad.onion ``` After: ```text INFO tor_hsservice: Generated a new identity for service foo: […]2qd.onion ```
* | | arti: test: Add note in `KeysListCmd::create_state_dir_entry`hjrgrn2025-08-251-0/+2
| | |
* | | arti: test: Add integration test suite for `arti keys`hjrgrn2025-08-2512-1/+384
| | | | | | | | | | | | | | | | | | | | | | | | | | | - Add `cli_tests/keys/util.rs` and `cli_tests/keys.rs` - Update `cli_tests/main.rs` and `testcases/keys/conf/keys.toml` - Add `ctor-keystore` directory to `keys` `local` directory - Restructure `keys` `local` directory layout - .editorconfig: Add exception for `ctor-keystore`s
* | | Merge branch 'rustls-disclaimer' into 'main'opara2025-08-254-12/+4
|\ \ \ | | | | | | | | | | | | | | | | docs: Remove outdated comments about rustls/ring license See merge request tpo/core/arti!3176
| * | | docs: remove outdated comments about rustls/ring licenseSteven Engler2025-08-214-12/+4
| | | |
* | | | Merge branch 'toml-0.9.5' into 'main'Nick Mathewson2025-08-238-8/+8
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Upgrade to toml-0.9.5. Closes #2093 See merge request tpo/core/arti!3163
| * | | | Upgrade to toml-0.9.5.Nick Mathewson2025-08-188-8/+8
| | | | | | | | | | | | | | | | | | | | Closes #2093.
* | | | | Merge branch 'arti-p112-docs' into 'main'David Goulet2025-08-213-0/+40
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | proto: tweak docs to say where the prop349 checks are implemented See merge request tpo/core/arti!3171
| * | | | | proto: Indent line in docs to satisfy clippy.Gabriela Moldovan2025-08-211-1/+1
| | | | | |
| * | | | | proto: Add prop349 note about the resolve stream handler.Gabriela Moldovan2025-08-201-0/+14
| | | | | |
| * | | | | proto: Document how handle_meta_cell can cause circuit teardown.Gabriela Moldovan2025-08-201-0/+14
| | | | | |
| * | | | | proto: Add docs about the lifecycle of MetaCellHandlers.Gabriela Moldovan2025-08-201-0/+12
| | | | | |
* | | | | | Merge branch 'handshake-versions' into 'main'David Goulet2025-08-218-87/+78
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | proto: Allow AUTHORIZE and VPADDING before VERSIONS See merge request tpo/core/arti!3174
| * | | | | proto: Remove the AUTHORIZE as a parsable cellDavid Goulet2025-08-217-75/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The AUTHORIZE cell command is simply reserved but not defined. The tor specification, at this point in time, is allowing such cell before the handshake starts but it is very unclear on what ordering is allowed nor how many can are allowed. C-tor silents drop them like VPADDING and so clearly unused. Instead of dealing with it, simply remove its support but keeping its reserved number. Signed-off-by: David Goulet <[email protected]>
| * | | | | proto: Add a channel handler comment and a fixDavid Goulet2025-08-211-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | | | | proto: Return AUTHORIZE, VPADDING and VERSIONS at handshakeDavid Goulet2025-08-212-24/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When starting a handshake, we were only expecting a VERSIONS which is not what the protocol say. An AUTHORIZE and VPADDING can arrive before a VERSIONS. Signed-off-by: David Goulet <[email protected]>
| * | | | | 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 'smol-add-impl-in-tor-rtcompat' into 'main'opara2025-08-2115-25/+505
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | | | | | | | | | | | | | smol: Implement smol in tor-rtcompat See merge request tpo/core/arti!2986
| * | | | | smol: Implement smol in tor-rtcompatNiel Duysters2025-08-2115-25/+505
| | | | | |
* | | | | | tor-proto: simplify some match statementsSteven Engler2025-08-201-46/+26
| | | | | |
* | | | | | 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]>
* | | | | | 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]>