| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
| | |
| | |
| | |
| | | |
This is now pretty straightforward. The functions it calls need some
work - we have blocking TODOs for that.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This now contains the hashing code that was in poc.
In poc it was entangled with the signature type, mostly because once
upon a time the hash was inside the signature.
In the real code we can make it a standalone method. It takes
DigestAlgoInSignature so that it will be able to handle the explicit
vs implicit sha1 anomaly correctly - but it can't do that yet because
the necessary field doesn't exist yet.
Also, we are going to want to make it a bit lazier - preserve the
MR-blocking todo for that.
A handful of lines are being actually moved verbatim,
so --color-moved may help a bit.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
There are definitely some things wrong with this, but they all have
MR-blocking TODOs so we can promote this type now.
Largely code motion. Review with --color-moved.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Because we have two DirectorySignatureHashAlgo types because of the
macrology problem, we need to introduce temporary conversions, to let
us move code from poc to prod.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
We're going to fix this in this branch, as part of promoting the poc
code to prod.
|
| | | |
| | |
| | |
| | | |
There isn't a "this" here; self is DirectorySignaturesHashesAccu.
|
| | | |
| | |
| | |
| | | |
This doesn't let us do any verification or anything.
|
| | | |
| | |
| | |
| | |
| | | |
This module will be used when we derive ItemValueParseable on
Signature.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
And change the type of the field in Signature.
We are going to abandon the almost completely manual parsing approach
taken in poc's NdiDirectorySignature. That parsing approach was
heavily influenced by poc's struct layout, which in turn was
influenced by the way that previously, hashes were inside signatures.
Instead we'll derive ItemValueParseable from Signature, and
semi-manually implement the hash update.
This type is the one that embodies the `directory-signature` item's
parsing strangeness: the optional initial positional argument.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Abolish the parse2_test and encode_test modules. These mostly existed
because of cfg gates.
Now, we can unify the test module namespace, and also remove an
indentation level (that will come next, with rustfmt).
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
This way we import via the public names, which is more sensible, and
we include things that aren't in misc. The whole of types is pretty
good as a glob import here.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
And remove a then-unneeded import in a using module.
|
| | |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the circ-padding feature is enabled, we use maybenot, which does
not yet support rand 0.10. In the meantime, enabling this feature pulls
in rand 0.9. This is not ideal, but should be okay as a temporary
situation.
This also replaces the use of ReseedingRng (which was removed in 0.10)
with the reseeding_rng crate. This is somewhat less performant, but it
should be okay.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit changes the name of all (except accept/reject) real items in
RouterDesc to their proper name as found in the spec.
This is a breaking change and semver.md has been updated properly.
In the instanciation of RouterDesc in the legacy parser, we now use a
"weird" syntax of some fields using a different name throughout the
code, but that is ok. Changing this would make the diff way larger at
the risk of breaking things, especially because many variables such as
identity_cert get shadowed countless times within the function, making
it harder and error prone to change.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit reorders the real RouterDesc items according to the spec.
Unfortunately, the names of those are not real yet, meaning that
verifying this is somewhat hard. Personally, I recommend to verify that
this commit does not add/remove lines using --color-moved. The correct
order is probably easier to verify with the next commit applied that
adds nice rustdoc comments explaining to which fields in the spec the
respective items belong. This is a bit of a chicken egg situation but
if I would have added the nice rustdoc comments first, this diff would
have been awful to review, because the hunks of reordering the nice
rustdoc comments included are awful to review, so please bear with me
for the next commit.
|
| | |
| |
| |
| |
| |
| |
| |
| | |
This commit reorders the RouterDesc struct into virtual and real items,
with real items being items that actually exist (although potentially
under a different name) in router descriptors. Virtual items on the
other hand do not exist this way in router descriptors and have to be
removed at one point or another.
|
| | |
| |
| |
| | |
Makes this much nicer to read.
|
| |\ \
| | |
| | |
| | |
| | | |
tor-netdoc: Combine two hex encoding loops into a function
See merge request tpo/core/arti!3947
|
| | | | |
|
| | | |
| | |
| | |
| | | |
The `revision` field is no longer dead code.
|
| |/ / |
|
| |\|
| |
| |
| |
| | |
Unknown keyword handling fixes; use a more principled type for directory signature hash algo
See merge request tpo/core/arti!3923
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
This type is now directly suitable for use in directory signatures.
While we're changing its type, rename the digest algorithm name field
from `digestname` to `digest_algo`. (The spec says `algorithm` but I
don't think we're going to reuse `direcctory-signature` for non-RSA
signatures so this is just the hash algorithm.)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We want DirectorySignatureHashAlgo for prod's directory Signature
type.
However, for complex cfg gate and macro scoping reasons, we can't just
move the definition out of poc. Hence this rather unpleasant
intermediate state. This will go away, and become normal again, when
we can abolish poc's signatures and have poc use a prod signature
type.
Review with
git show --color=always --color-moved-ws=allow-indentation-change --color-moved
|
| | | |
|
| | |
| |
| |
| |
| | |
We're going to use this for `directory-signature`'s hash algorithm,
which the current code always treats as a string!
|
| | | |
|
| | |
| |
| |
| |
| | |
Make the operation of disregarding the possible existence of
already-discarded information, more explicit.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows implementing NormalItemArgument for types that can only be
parsed, or only displayed - or other combinations.
I noticed this restriction while inventing a type I later decided was
unnecessary. I still think it's a good change.
There is no practical impact elsewhere, since in practice downstream
code implements NormalItemArgument rather than relying on it.
|
| | |
| |
| |
| | |
Part of #2492 phase 2.
|
| |/
|
|
|
|
| |
Change all call sites.
This completes the rename.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
Everything that this needs is un-gated now.
|
| |
|
|
|
| |
These are complete. Un-gate the RouterStatusMdDigestsVote
implementation, and the export of both.
|
| |
|
|
| |
As per #2492.
|
| |
|
|
| |
As per #2492.
|
| |
|
|
|
| |
This is only used for hsdescs right now. But it doesn't need to be
gated behind encode.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|