aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-netdoc/src
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge branch 'testdata-export' into 'main'Ian Jackson2026-07-272-0/+89
|\ \ \ | |/ / |/| / | |/ | | tor-netdoc testdata-live: Export for the benefit of other crates See merge request tpo/core/arti!4229
| * tor-netdoc testdata-live: Export for the benefit of other cratesIan Jackson2026-07-232-0/+89
| | | | | | | | | | | | | | | | Add a new testdata_live module which is exposed with the testing features, containing the testdata-live in string constants. This avoids the need for test cases in other crates to walk the filesystem to an area outside their own crate path.
* | tor-netdoc: HsDesc parse_decrypt_validate: Fix docs re time boundsIan Jackson2026-07-231-1/+2
| | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/4223#note_3438348
* | HsDesc::parse_decrypt_validate: Don't check validity time (style followup)Ian Jackson2026-07-231-5/+3
| |
* | HsDesc::parse_decrypt_validate: Don't check validity timeIan Jackson2026-07-231-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This function returns a `TimeRangeBound`. That implies a responsibility on the caller to check the time. It doesn't make sense for this function to do the check as well. But, it turns out that in tor-hsclient, the `TimeRangeBound<HsDesc>` is sometimes processed with `.dangerously` on the assumption that it was checked earlier. I considered changing this, and storing plain `HsDesc` and a separate `TimeRange` - but that's not right, because there are places where the `TimeRangeBound<HsDesc>` is used well after it was verified. Instead, in this commit, I (effectively) move the `.check_valid_at` call from `parse_decrypt_validate` to its principal call site. This involves a change to the error representation. Previously, validity time errors ended up as `DescriptorErrorDetail::Descriptor` containing an `HsDescError::OuterValidation` HsDescError:: InnerValidation`, which in turn contains a `tor_netdoc::Error`. (`tor_netdoc::Error` is a rather awkward type.) Now we have our own error variant. The overall behaviour is unchanged.
* | tor-netdoc: hsdesc: Use new TimeRangeBound::build_intersect (fmt)Ian Jackson2026-07-231-5/+4
| |
* | tor-netdoc: hsdesc: Use new TimeRangeBound::build_intersectIan Jackson2026-07-231-27/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace open-coding of various is_valid_at and various dangerously and intersect. In more detail: * Do most of the processing inside `TimeRangeBound::build_intersect` * Replace uses of dangerously_peek etc. with `TimeBound::unwrap_with` * The timebound machinery now takes care of doing the intersection * Remove the individual `.is_valid_at` calls and replace them with one at the end, on the intersection. This preserves the current behaviour except that sometimes time validity errors will now be reported as having occurred the wrong level. We'll deal with this in a moment (by deleting these checks from here entirely). * There is no need to handle a `None` from `intersect` any more. TimeBound handles conflicting time ranges differently: it allows ranges which are empty due to being ill-formed.
* | tor-netdoc: hsdesc: Rename a variableIan Jackson2026-07-231-2/+2
| | | | | | | | | | This variable had a different name inside the block, to outside. This was confusing, and, fixing it makes the next commit clearer.
* | tor-checkable: Rename `TimeBound::is_valid_at` to `check_valid_at` (fmt)Ian Jackson2026-07-231-1/+5
| |
* | tor-checkable: Rename `TimeBound::is_valid_at` to `check_valid_at`Ian Jackson2026-07-233-6/+6
| | | | | | | | | | I find this names confusing. To my mind "is" implies a function returning `bool`.
* | tor-checkable: Rename `TimeBound::check_valid_*` to `if_valid_*`Ian Jackson2026-07-237-25/+25
| | | | | | | | | | | | | | I find these names confusing. To my mind "check" implies a function returning `Result<(), _>`. Some other APIs use `unwrap` here but I think `if` is good.
* | tor-checkable: TimeBound: Make dangerously_into_parts return TimeRangeIan Jackson2026-07-231-1/+2
| | | | | | | | | | It is better to return a more cooked type. `TimeRange` aka `TimeRangeBound<()>` is perfect for this.
* | tor-checkable: TimeRangeBound: Rename extend_tolerance to extend_end_boundIan Jackson2026-07-232-3/+3
| | | | | | | | | | | | | | | | | | It was confusing that one of these functions had "which bound" mentioned in its name, but the other didn't. So add `end` and switch from `tolerance` to `bound` (see previous commit message). *This* commit should deal only in `extend_tolerance` and `end` and shouldn't touch `extend_start_bound` or `extend_pre_tolerance`.
* | tor-checkable: TimeRangeBound: Rename extend_pre_tolerance to extend_start_boundIan Jackson2026-07-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Although it is often used to apply a tolerance, it doesn't make sense to say that this is extending the "tolerance" of a `TimeRangeBound`. A `TimeRangeBound` doesn't have a tolerance, only bounds. Also we should be consistent in our terminology, and use `start` rather than `pre`. We'll rename the other method too. Doing them one at a time will makes it easier to spot any "pre/start" vs "<nothing>/end" slips: *this* commit should deal only in `pre` and `start` and shouldn't touch `extend_tolerance`.
* | tor-checkable: TimeRangeBound: Rename bounds to bounds_start_endIan Jackson2026-07-231-1/+1
|/ | | | | | | | | | This just returns a tuple. We're going to introduce a new method that returns a `TimeRagne` and will want to be called `bounds`. That method will want to be in the `TimeBound` trait, but for now we add it here. Various call sites will be added in forthcoming commits.
* tor-netdoc: Fix grammar in a commentIan Jackson2026-07-221-1/+1
|
* tor-netdoc tests; work around version number ordering issueIan Jackson2026-07-211-0/+16
| | | | | | | | | Ideally we would have Arti sort things sensibly but currently we have no types in Arti that are (1) faithful (2) sort correctly. Most of the existing types eventually have a `TorVersion` inside, which is lossy, so we can't use them for (eg) dirauth network status processing.
* tor-netdoc: Provide PortPolicy::from_ordered_allowed_rangesIan Jackson2026-07-211-1/+22
| | | | | | In some sense this is a convenience wrapper around `push_ordered`, but, really, it's the only nontrivial constructor that doesn't take an iterator of individual port numbers.
* tor-netdoc: Rename PortPolicy::from_allowed_ranges to from_allowed_port_rangesIan Jackson2026-07-212-3/+2
| | | | | This takes a PortRanges. We're going to introduce another function to construct from an iterator.
* tor-netdoc: Break out and expose parse_testcase_from_netdocIan Jackson2026-07-213-29/+78
|
* tor-netdoc: NetdocParseableFields::Accumulator must be DefaultIan Jackson2026-07-211-1/+1
| | | | | | The macro-generated code for `#[deftly(netdoc(flatten))]` relies on this. The Default impl is genereated by the derive, but a generic or handwritten `NetdocParseableFields` wouldn't work.
* tor-netdoc: Add a couple of calls to .void_unwrap()Ian Jackson2026-07-211-3/+5
| | | | | Otherwise our MSRV compiler prints a warning, that this was an unhandled Result.
* Merge branch 'timebound-naming' into 'main'gabi-2502026-07-1615-79/+79
|\ | | | | | | | | tor-checkable: Rename Timebound to TimeBound and TimerangeBound to TimeRangeBound See merge request tpo/core/arti!4215
| * Use new TimeRangeBound name throughout the treeIan Jackson2026-07-1612-61/+61
| |
| * Use new TimeBound name throughout the treeIan Jackson2026-07-1611-21/+21
| |
* | tor-netdoc: Remove now-redundant bindingIan Jackson2026-07-161-2/+1
| |
* | Use "extend" for tor-netdoc lines StrExtIan Jackson2026-07-161-3/+5
|/
* Merge branch 'remove-lint' into 'main'Jim Newsome2026-07-153-3/+1
|\ | | | | | | | | | | | | Removed unnecessary lint Closes #2556 See merge request tpo/core/arti!4210
| * add_warning: add reference to arti#2556Jim Newsome2026-07-151-1/+1
| |
| * Removed unnecessary lintpryty262026-07-153-3/+1
| | | | | | | | Removed unnecessary lint
* | tor-netdoc: Expose ConsensusMethod's fieldIan Jackson2026-07-151-1/+2
| |
* | tor-netdoc: Test that test helper can fail as expectedIan Jackson2026-07-151-6/+39
| | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/4198#note_3434449
* | tor-netdoc: Fix typos in docsIan Jackson2026-07-151-2/+2
| |
* | tor-netdoc: Implement precise port summariesIan Jackson2026-07-152-0/+556
| | | | | | | | | | | | | | | | For calculating `ipv6-policy` in routerdescs. Also implement for v4 for the benefit of future tests of approximate port policy summaries, for possible future protocol change, and for completeness.
* | tor-netdoc: Stabilise votes and encoding of authcerts (formatting)Ian Jackson2026-07-153-13/+8
| |
* | tor-netdoc: Stabilise votes and encoding of authcertsIan Jackson2026-07-158-37/+13
| |
* | tor-netdoc: Remove a now-unnecessary allowIan Jackson2026-07-151-1/+0
| |
* | tor-netdoc: drop a done TODOIan Jackson2026-07-151-3/+0
| | | | | | | | torspec!499 is merged.
* | tor-netdoc tests: Test consensus verification error casesIan Jackson2026-07-153-5/+104
| |
* | tor-netdoc tests: Break out prep_netstatus_verify (fmt)Ian Jackson2026-07-151-6/+1
| |
* | tor-netdoc tests: Break out prep_netstatus_verifyIan Jackson2026-07-151-18/+32
| |
* | tor-netdoc tests: Test roundtrip of subset of live dataIan Jackson2026-07-151-2/+50
| | | | | | | | With facility to test roundtrip of whole consensus.
* | tor-netdoc: Add some missing "retain-unknown" cfg gates to testsIan Jackson2026-07-151-4/+4
| | | | | | | | Nothing in CI tests incomplete without retain-unknown, apparently.
* | tor-netdoc: Now that poc is gone, make some things no longer pub(crate)Ian Jackson2026-07-151-9/+4
| |
* | tor-netdoc: Abolish pocIan Jackson2026-07-155-421/+0
| |
* | Merge branch 'clippy_warning' into 'main'Jim Newsome2026-07-132-3/+3
|\ \ | | | | | | | | | | | | multiple crates: Fix clippy warnings See merge request tpo/core/arti!4203
| * | multiple crates: Fix clippy warningshjrgrn2026-07-102-3/+3
| |/
* | Merge branch 'upgrade-cipher' into 'main'gabi-2502026-07-131-1/+1
|\ \ | |/ |/| | | | | Upgrade cipher, aes, and ctr. See merge request tpo/core/arti!4195
| * Upgrade cipher, aes, and ctr.Nick Mathewson2026-07-131-1/+1
| |
* | Merge branch 'onion-svc-negotiate-v2' into 'main'Nick Mathewson2026-07-024-5/+177
|\ \ | | | | | | | | | | | | | | | | | | Negotiate flowcontrol-cc and CGO on onion services Closes #2473 and #1948 See merge request tpo/core/arti!4135