| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit adds #[allow(clippy::string_slice)] to all functions in the
code where string slices are used, alongside a TODO comment.
We do this add the function header to have it consistent, as things like
expression based allow's are still experimental.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit executes maint/add_warning with the just added change to
deny string slices except in tests.
I recommend auditing this by checking out the previous commit followed
by running the script yourself and then verifying that the diff is
identical to this commit.
This commit makes cargo clippy fail. We will add exceptions in the next
commit.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
All of the pieces are in place for this now.
Some of the pieces are not entirely complete or correct at this point:
that's sorted out by other MRs already open.
Currently there is no encoding, no verification functdion, and no
tests. Encoding depends on another oustanding MR (arti!4058).
Verification depends on the rework in arti!4065.
Tests are still to come.
|
| | | |
| | |
| | |
| | | |
This defines ordering of routerstatus items.
|
| | | | |
|
| |/ /
| |
| |
| |
| |
| | |
This is a nontrivial type with much weirdness to do with publication
times etc., so let's mark this as incomplete until we have a round
trip test.
|
| |\ \
| | |
| | |
| | |
| | | |
tor-netdoc: minor fixes arising from netstatus work
See merge request tpo/core/arti!4055
|
| | |/
| |
| |
| | |
Now it round-trips.
|
| | | |
|
| |/ |
|
| | |
|
| |
|
|
|
|
|
|
| |
Sorting by the applicable consensus methods set seems reasonable.
The spec doesn't state the order for this. I think that's fine.
We can't expect to repro the same consensus with different software,
and we will produce stable output.
|
| |
|
|
|
| |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3991#note_3413168
|
| |
|
|
|
|
|
|
| |
For encoding, we need to represent the raw parameters.
This change is carefully arranged so that when the retain unknown feature is
disabled (ie, in clients), the per-router data structure remains the
same.
|
| |
|
|
|
|
|
|
| |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3985#note_3413182
I left the word "fixed" in some of the docs and error messages, where
it seemed to make sense.
|
| | |
|
| |
|
|
|
| |
Defining a struct gives us a place to hang the documentation, and
avoids an accidentally-exhaustive tuple.
|
| |
|
|
|
|
|
| |
This is more code than the poc version but much of the extra is
documentation, and it seems much less magical this way.
We still need a handwritten parser for plain consensuses, sadly.
|
| |
|
|
|
|
|
|
| |
The order of arguments of poc's ns_type macro is different to that of
the real code. This is very confusing!
However, the type is correct, once we've added the singleton signature
for votes.
|
| |
|
|
|
|
| |
This will let us (re)use the existing signature checking code with the
parse2 type, since we'll be able to make a SignatureGroup out of a
parse2'd UnverifiedNetworkStatus.
|
| |
|
|
|
| |
This is the whole of the footer section, with docs, appropriate
derives, and so on.
|
| | |
|
| |
|
|
| |
This matches the spec.
|
| |
|
|
|
|
|
|
|
|
|
| |
This will allow us to include this, conditionally, in the new
per-variety footer types for consensuses, without too much disruption
to the existing code.
We don't leave a compatibility alias because we're going to want a
Footer in each_variety.rs which is the actual sub-document. This old
struct isn't suitable because it doesn't have the intro item and is
just for consensuses.
|
| |
|
|
|
| |
This is not tested yet. It will be tested when we add round-trip
tests for votes.
|
| |
|
|
| |
This doesn't parse the keyword, only the value.
|
| |
|
|
|
|
|
|
|
| |
* Rename it so that it doesn't mention parse2, because we're going to
want to encode too.
* Remove the indirection: rename the one in md.rs to be the name
that's used in `with = `. (Previously, things were more complicated
so the extra layer of indirection was helpful.)
|
| | |
|
| |
|
|
|
|
|
| |
FixedB64 is the right type for these, when they are present.
This abolishes some ad-hoc boilerplate. Sadly we still need a bit of
that for Reasons.
|
| |
|
|
|
|
|
|
| |
Previously, this was't possible because derive-deftly wanted a string.
But now it can take a type, and types can contain macro calls inside
their generics etc.
This makes the code much more local and direct.
|
| |
|
|
| |
This is router *status* not router *descriptor*.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
Preamble now doesn't contain anything that's *wrong*. It is missing a
couple of fields that will be wanted when we generate votes.
|
| |
|
|
|
| |
This isn't needed for the arti dirauth consensus method, but it will
be needed for arti dirauth vote calculator.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Change "ns-vote" gates to "incomplete":
* `vote` modules, and in the variety macro.
(And make a TODO more likely to be found.)
Change "parse2" gates to "incomplete":
* VoteAuthoritySection
|
| |
|
|
|
| |
These are complete. Un-gate the RouterStatusMdDigestsVote
implementation, and the export of both.
|
| |
|
|
| |
As per #2492.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This stabilises the parse2 and encode impls of consensus tyepe:
* {plain, md}::{Preamble, RouterStatus, RouterStatusIntroItem}
It also un-gates the parse2 and encode impls of some vote types.
* VoteAuthorityEntry - this type has been completed.
* RouterStatusMdDigestsVote - whole type still gated with ns-vote
Re the remaining vote types (vote::*): although each_variety.rs
doesn't have a cfg itself, there is a feature gate in the variety
macrology.
|
| | |
|
| |
|
|
| |
There are no outstanding TODOs here.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replace poc code with new ConsensusAuthoritySection.
This is an entirely new parsing approach.
Key differences:
* We parse the arguments to dir-source, which poc didn't.
* We don't clone the input and fully parse the first item; instead,
we dismantle the dir-source line ad-hoc to determine the item type.
* Rather than a Vec of Enums, we parse into two Vecs
of the different entry types.
The few lines that aren't rewritten show up as moved in
git show --color-moved --color-moved-ws=allow-indentation-change
but I suggest reviewing the new implementation de novo.
|
| |
|
|
|
| |
This is the type corresponding to a "superseded authority key entry",
which is a single dir-source line with a weird nickname.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is going to handle the bizarre `-legacy` nickname encoding for
superseded authority keys. That's going to be a fair amount of code,
some derived from DirSource. Make a module for it all.
We're going to take a different approach that in poc. So there's
going to be all-new code and then the poc version will be deleted.
They don't resemble each other very much.
In this commit: just code motion, and the creation of the new module
with associated doc comment. Review with --color-moved.
|
| | |
|