summaryrefslogtreecommitdiff
path: root/crates/tor-hsservice
Commit message (Collapse)AuthorAgeFilesLines
* Bump all the unstable tor- and arti- crates to 0.29.0.Gabriela Moldovan2025-03-311-29/+29
| | | | | | | | | | Done using: ``` for crate in $(./maint/list_crates | rg '^(tor|arti-)'); do cargo set-version -p $crate 0.29.0 done ```
* Bump the versions of the non-{arti-,tor-} crates.Gabriela Moldovan2025-03-311-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The non-{arti-,tor-} crates are: ``` ./maint/list_crates | rg -v '^(tor|arti)' oneshot-fused-workaround slotmap-careful test-temp-dir fslock-guard hashx equix caret fs-mistrust safelog retry-error ``` We split them in the following categories: * crates with no changes (no version bumps): ``` maint/changed_crates -v "arti-v$LAST_VERSION" 2>&1 >/dev/null | grep -i "no change" | grep -v '\(tor\|arti\)-' oneshot-fused-workaround: No change. slotmap-careful: No change. fslock-guard: No change. caret: No change. retry-error: No change. ``` * crates that only have non-functional changes (bump the patch version): - test-temp-dir - equix - fs-mistrust - safelog * crates where APIs were broken (bump minor): - hashx (`RngCore` impl for `SipRand`) The bumps from this commit were created using this script: ``` PATCH=" test-temp-dir equix fs-mistrust safelog " for crate in $PATCH; do cargo set-version --bump patch -p $crate; done MINOR=" hashx " for crate in $MINOR; do cargo set-version --bump minor -p $crate; done ```
* Upgrade strum dependency to 0.27.1.Gabriela Moldovan2025-03-271-1/+1
| | | | | | | | | In 0.27.0, strum's MSRV was bumped to 1.66.1, but that's okay because ours is 1.77. We aren't affected by any of its [breaking changes]. [breaking changes]: https://github.com/Peternator7/strum/blob/master/CHANGELOG.md#0270
* Use an EntropicRng trait to enforce key generation rules.Nick Mathewson2025-03-242-2/+6
| | | | | | | | | | | We want to require that whenever we generate a key that's persistent (stored in KeyMgr), it's going to be made from a stronger-than-usual Rng. This trait helps us enforce that. We also add a FakeEntropicRng struct to use for testing. Note that this turned up a case that we'd missed, which required an internal change in tor-hsservice.
* Use CautiousRng for keys going into the KeyMgr.Nick Mathewson2025-03-242-3/+2
|
* Merge branch 'named_protovers' into 'main'David Goulet2025-03-201-2/+3
|\ | | | | | | | | | | | | protover: Add support for subprotocol version mnemonics. Closes #1891 See merge request tpo/core/arti!2854
| * Use named subprotocol versions throughout arti.Nick Mathewson2025-03-121-2/+3
| |
* | squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-183-3/+3
| | | | | | | | - The Rng::gen() functions have been renamed to Rng::random().
* | squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-1/+1
| | | | | | | | - The Standard distribution has been renamed to StandardUniform.
* | squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-1/+1
| | | | | | | | - The rand::distributions module has been renamed to rand::distr
* | squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-185-5/+5
| | | | | | | | - `rand::thread_rng()` has been deprecated and renamed to `rand::rng()`
* | Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-2/+2
| | | | | | | | | | | | (Per discussion at #1774, we think the changes are acceptable.) This commit won't compile on its own; subsequent commits will fix it.
* | Merge branch 'dev/cve/is_fully_reachable' into 'main'gabi-2502025-03-141-0/+10
|\ \ | |/ |/| | | | | | | | | tor-hsservice: Add is_fully_reachable() method Closes #1890 See merge request tpo/core/arti!2850
| * tor-hsservice: Add is_fully_reachable() methodClara Engler2025-03-131-0/+10
| | | | | | | | | | | | | | | | | | This commit adds a `is_fully_reachable()` method to `tor_hsservice::status::State` in order to check whether the hidden service is believed to be fully reachable. See #1887 Fixes #1890
* | Deprecate --onion-name; introduce --onion-addressdisha2025-03-122-6/+23
|/
* tor-rtmock: task: Remove Default impl for ThreadDescriptorIan Jackson2025-03-041-1/+1
| | | | | | | | | This is going to become a hazard. Let's be explicit. This means using educe to derive the Default for Data. We also need to update our educe dependency to 0.4.22, since that's when Default(expression= "...") started working correctly.
* tor-rt*: Apply deferred formatting churnIan Jackson2025-03-041-1/+1
| | | | rustfmt.
* tor-rtcompat: Rename BlockOn to ToplevelBlockOnIan Jackson2025-03-044-5/+5
| | | | | | | | | | We're going to distinguish top-level runtime entry, from *re*-entry to an existing executor. It is most convenient to rename this trait first. Documentation of the distinction will come later. (We're going to retain the function name `block_on`, but we want the trait to be more obviously a top-level only thing, though, so we give it a name that will hopefully avoid it peroulating throughout the codebase..)
* Bump minor versions in tor-*, arti-*.Nick Mathewson2025-03-031-29/+29
|
* Upgrade to derive_more 2Nick Mathewson2025-02-262-5/+9
| | | | | This took a little refactoring, since derive_more::Foo no longer re-exports std::ops::Foo.
* Enable derive-deftly beta featuresIan Jackson2025-02-121-1/+1
| | | | | | | | Right now this will give us `${Xmeta as ... default ...}`, which may improve things in the future. The Cargo.toml syntax is precisely that from https://docs.rs/derive-deftly/1.0.0/derive_deftly/doc_changelog/index.html#t:beta
* Update to derive-deftly 1.0Ian Jackson2025-02-121-1/+1
| | | | | | | | | This is released now. Prepared with: cargo upgrade -i -p derive-deftly There is some new duplication now I think mostly because pwd-grp uses old derive-deftly.
* tor-hsservice: Change replay/mod.rs to replay.rs.Wesley Aptekar-Cassels2025-02-101-0/+0
| | | | We have a new lint that requires this.
* tor-hsservice: Change unclear names in ReplayLog.Wesley Aptekar-Cassels2025-02-102-21/+21
|
* tor-hsservice: Assert that hash length is correct in ReplayLog.Wesley Aptekar-Cassels2025-02-101-0/+3
|
* tor-hsservice: Change ReplayLog parse_log_leafname API.Wesley Aptekar-Cassels2025-02-103-8/+11
| | | | | This previously returned a &str for sort of unclear reasons, which was only used in logging. Remove that.
* tor-hsservice: Fix some comments in ReplayLog.Wesley Aptekar-Cassels2025-02-101-2/+5
|
* tor-hsservice: Make TODOs not doccomments.Wesley Aptekar-Cassels2025-02-101-2/+2
|
* tor-hsservice: Rename some variables to reflect refactor.Wesley Aptekar-Cassels2025-02-101-22/+22
| | | | | | Get rid of anything talking about hashes or "h" in mod.rs, since that should now be relegated to ipt.rs. Fix some other things to use generic names as well.
* tor-hsservice: Add whitespace.Wesley Aptekar-Cassels2025-02-101-0/+1
|
* tor-hsservice: Update comment in replay log code.Wesley Aptekar-Cassels2025-02-101-1/+3
|
* tor-hsservice: Remove ReplayLog::check_inner.Wesley Aptekar-Cassels2025-02-101-9/+2
| | | | | | This didn't really need to be a helper, we can just do everything in check_for_replay. It was a helper since we previously couldn't test the check_for_replay function, but now that this is generic we can.
* tor-hsservice: Remove ReplayLog HASH_LEN constant.Wesley Aptekar-Cassels2025-02-101-9/+8
| | | | | This needed to be the same as the MESSAGE_LEN constant, so we should just use the same constant for both.
* tor-hsservice: Clean up replay::ipt::hash types.Wesley Aptekar-Cassels2025-02-101-9/+6
| | | | | I don't think a newtype here was really buying us anything. Might as well get rid of it.
* tor-hsservice: Move replay::hash into replay::ipt::hash.Wesley Aptekar-Cassels2025-02-102-75/+83
| | | | The IPT log is the only one that will need hashing, so move that code.
* tor-hsservice: Move ReplayLog hashing out of generic code.Wesley Aptekar-Cassels2025-02-102-19/+20
|
* tor-hsservice: Stop using check_inner in ReplayLog tests.Wesley Aptekar-Cassels2025-02-101-41/+69
| | | | | | This is a internal detail that the tests shouldn't care about. This will also allow us to make hashing a detail handled by IptReplayLogType, rather than having it in the generic code.
* tor-hsservice: Make ReplayLog magic bytes generic.Wesley Aptekar-Cassels2025-02-102-12/+21
| | | | This will ensure that we can't confuse different types of replay logs.
* tor-hsservice: Make ReplayLog generic.Wesley Aptekar-Cassels2025-02-105-50/+102
|
* tor-hsservice: Make directory for replay module.Wesley Aptekar-Cassels2025-02-101-0/+0
| | | | | This will shortly become multiple files, so it will be helpful to have it in a directory.
* Bump minor version of fs-mistrustIan Jackson2025-02-071-1/+1
| | | | Fixes #1841.
* Version bumps to 0.27.0Ian Jackson2025-02-061-29/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See Release.md. maint/list_crates | grep -P '^tor-|^arti-' | xargs -n1 nailing-cargo -Eu set-version --bump minor -p This completes the version bumps. The report of changed crates, before I started the release work, is: $ maint/changed_crates -v "arti-v$LAST_VERSION" oneshot-fused-workaround: No change. slotmap-careful: No change. test-temp-dir: No change. fslock-guard: No change. hashx: No change. equix: No change. tor-basic-utils: No change. caret: No change. fs-mistrust safelog: No change. retry-error: No change. tor-error tor-general-addr: No change. tor-geoip: No change. tor-rtcompat tor-rtmock tor-async-utils tor-config tor-config-path tor-rpc-connect tor-log-ratelim: No change. tor-rpcbase tor-memquota: No change. tor-units tor-llcrypto: No change. tor-protover: No change. tor-bytes tor-checkable: No change. tor-cert tor-key-forge tor-hscrypto: No change. tor-socksproto: No change. tor-linkspec: No change. tor-cell: No change. tor-proto tor-netdoc: No change. tor-consdiff: No change. tor-netdir tor-relay-selection: No change. tor-persist tor-chanmgr tor-ptmgr: No change. tor-guardmgr: No change. tor-circmgr tor-dirclient: No change. tor-dirmgr: No change. tor-keymgr tor-hsclient tor-hsservice tor-hsrproxy: No change. tor-relay-crypto arti-client arti-relay arti-rpcserver arti arti-rpc-client-core $
* fs-mistrust: bump minor version, and in-tree depsIan Jackson2025-02-061-1/+1
| | | | | | | | | | | | There are new features. cargo set-version --offline --bump minor -p fs-mistrust Actually, I have discovered by diffing that some methods now take `&self` where previously they took `self`. This will need a further bump to the fs-mistrust version and a fix to the changelog. I will do that. Filed blocker ticket #1841 for it.
* proto: Remove ConversationInHandlerDavid Goulet2025-02-042-6/+2
| | | | | | | | | | | | | | | | | | | It is unused but most importantly it allows any RELAY cell to be sent from anywhere in the code which is really not desirable because it is skipping congestion control. It also allows us to remove the `control_tx` from the reactor which is one less channel to track/understand/think about. This opens up the door to all sorts of problems especially side channel that can be exploited if we are not careful. We can always bring this back if we need it but for now, it is unused and allows us to remove the `CtrlMsg::SendRelayCell` control message. No code behavior change. Signed-off-by: David Goulet <[email protected]>
* tor-proto: Rewrite circuit reactor run_once() loop to use select!.Gabriela Moldovan2025-01-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This rewrites the circuit reactor main loop to use `select_biased!` to poll multiple futures simultaneously. The new `run_once()`, like the old, first waits for an initial `CtrlMsg::Create`. Then, it uses a `select_biased!` to poll the `chan_sender` sink and shutdown channel for readiness. When the channel sink is ready, we poll the `control` and `input` channels like before, as well as the new `ready_streams` `Stream` (`ready_streams` is a `futures::Stream` that replaces the previous `send_outbound()` function). Most of the implementation remains unchanged, except the `handle_input`, `handle_cell` and `handle_control` functions no longer send anything on the `chan_sender` channel. Instead, they may do some (synchronous) processing, and send instructions for the remaining work that needs to be done (for example, for writing the cell to the `chan_sender` channel). These instructions are handled at the end of `run_once()`, and are encoded in the `RunOnceCmdInner` enum. What this change does **not** do: * the control channel *still* bypasses congestion control. We could fix this by making the various reactor functions send the `RunOnceCmdInner` commands to `run_once()` via a channel (instead of returning them). This would enable the reactor to stop reading the commands (except for handle `Sendme`, which would be handled separately) if it's blocked on congestion control.
* circmgr: Remove the CircParameters build .expect()David Goulet2025-01-161-1/+2
| | | | | | Instead, return an error and make all call site handle it. Signed-off-by: David Goulet <[email protected]>
* circ: Specialize the circparams from netparams functionDavid Goulet2025-01-162-3/+2
| | | | | | | | | | | | | | | Congestion control parameters have specific values depending on the circuit type. Instead of using a CircuitType, which is removed in this commit, specialize the function in this case onion and exit. This allows us to get rid of CircuitType and solely use TargetCircUsage instead. At this commit, we use .expect() on the Builder. Future commit will remove this to return a Result in case of failure. Worth noting that we don't expect one. Signed-off-by: David Goulet <[email protected]>
* circmgr: Modify CircParameters for congestion controlDavid Goulet2025-01-161-1/+2
| | | | | | | | | | | | | | The congestion control parameters are created from the consensus parameters (netparams) and then put into the CircParameters object that is then passed down the tor-proto crate. Because different parameters are selected depending on the circuit type (onion vs exit vs sbws), a CircuitType enum is introduced for the sole purpose of being used to select the right parameters. Related #534 Signed-off-by: David Goulet <[email protected]>
* Bump versions of internal arti crates for Arti 1.3.2Nick Mathewson2025-01-071-29/+29
| | | | | | | | | | | | | The affected crates follow our regular versioning. They all get bumped to 0.26.0. Done with ``` for crate in $(./maint/list_crates |grep '^arti-\|tor-' ); do cargo set-version --bump minor -p $crate; done ```
* clippy: deny `mod_module_files`Steven Engler2025-01-061-0/+1
| | | | | | Denies 'mod.rs' files for consistency. https://rust-lang.github.io/rust-clippy/master/index.html#mod_module_files