Nick Mathewson
9f4230fb1b
Initial pass on directory-manager code.
...
This code can now bootstrap from the network, cache the results, and
reload from cache.
There's lots more work to do here, including a big pile of tidying
and refactoring and testing and documentation.
2020-11-19 19:11:10 -05:00
Nick Mathewson
87fe434875
Refactor AuthCertKeyIds::cmp().
2020-11-19 11:38:06 -05:00
Nick Mathewson
02bac5f04e
Add support for using fallback directories in path construction
...
This is mainly a refactoring commit, with a little new code.
It also adds #[derive(Copy,Clone)] for a few types.
2020-11-19 10:06:48 -05:00
Nick Mathewson
168def3c28
Make AuthCertKeyIds sortable.
2020-11-16 15:08:12 -05:00
Nick Mathewson
29afe2869f
Type and functions for key ID inspection of AuthCert.
2020-11-16 08:55:31 -05:00
Nick Mathewson
4512d7e9ed
Have the consensus-parsing code expose the signed piece of the consensus.
2020-11-16 08:55:31 -05:00
Nick Mathewson
cc59658fea
Add accessors for consensus lifetimes.
2020-11-14 10:32:17 -05:00
Nick Mathewson
0d1489be4e
Remember the position of authcert and microdescs
...
We'll need this to save them to disk after parsing them from an
upstream source.
2020-11-14 10:32:17 -05:00
Nick Mathewson
38070d6ec9
netdoc: Add a bogus "Extent()" facility to remember where things were.
...
Also add the missing str.rs file (oops)
2020-11-14 10:32:17 -05:00
Nick Mathewson
8569af82dd
netdoc: split off string utils
2020-11-14 10:32:17 -05:00
Nick Mathewson
e417a9dc13
Use Infallible in tor-netdoc.
2020-11-11 10:09:16 -05:00
Nick Mathewson
136c536123
Mark tor_netdoc::err::Pos as Send and Sync
...
I am about 99% sure this is safe: the pointer that this type
contains is never dereferenced, and is only compared to the bounds
of a string later on.
2020-11-11 10:00:48 -05:00
Nick Mathewson
c440f4d476
Use bitflags crate to represent RouterFlags.
2020-11-11 09:33:53 -05:00
Nick Mathewson
4d24fff9c0
Upgrade dependencies
2020-11-10 12:27:10 -05:00
Nick Mathewson
d9dafa0a28
Add a new circuit-manager crate and move path selection there.
2020-11-02 10:44:31 -05:00
Nick Mathewson
b93e4b76c8
Remove a bunch of dbg! calls.
2020-10-26 14:33:14 -04:00
Nick Mathewson
d3b71bc177
More documentation in tor-netdoc.
2020-10-26 11:51:53 -04:00
Nick Mathewson
8c09981427
Use from_bytes name for Ed25519Identity
2020-10-25 20:32:47 -04:00
Nick Mathewson
f3e1fafca2
Validate master-key-ed25519 field in routerdescs
2020-10-19 09:44:38 -04:00
Nick Mathewson
57637f3644
netdir: don't use relays with NoEdConsensus flag set.
2020-10-19 09:31:36 -04:00
Nick Mathewson
295a791a82
Improvements to Relay type in tor-netdir.
...
Now, a Relay is always valid. This required some changes to the
API: all_relays() has to return a new UncheckedRelay type that might
or might not be valid, and the functions on Relay and ChanTarget
that return ed25519 identities need to return an Ed25519Identity,
not an ed25519::PublicKey.
This change required some new encoding/decoding/conversion functions
on Ed25519Identity.
2020-10-19 09:22:49 -04:00
Nick Mathewson
3798891b36
Calculate digest correctly when microdesc ends with base64 object.
2020-10-19 08:42:35 -04:00
Nick Mathewson
df406f5319
Netdoc: validate objects even on unrecognized items.
2020-10-19 08:09:20 -04:00
Nick Mathewson
6f3d5d061d
portpolicy: note a spec issue
2020-10-19 08:08:38 -04:00
Nick Mathewson
5523134607
Mark must-resolve XXXX issues with "XXXXM3".
...
"M3" is for "milestone 3" -- my target to fix the technical debt
that I think will be bad if we ship even a pre-alpha with it.
These aren't necessarily _all_ must-resolve, but they're all
must-look-at.
Closes #15
2020-10-18 17:38:59 -04:00
Nick Mathewson
32bfeb84eb
Update microdesc parsing: ed25519 keys are no longer optional.
2020-10-18 17:12:47 -04:00
Nick Mathewson
353a4bfb87
Cleanup from prop315 implementation.
...
Most of the fixes here are just removing comments that said "this
isn't technically required but I'm going to pretend it is".
I also made the "protocols" field in microdescs out of its Option<>,
since we're now requiring that.
2020-10-16 16:36:51 -04:00
Nick Mathewson
7a4c1e87ea
Implement proposal 315: make various directory fields required
2020-10-16 16:30:40 -04:00
Nick Mathewson
3408c9ad26
Run "cargo upgrade".
2020-10-15 13:32:02 -04:00
Nick Mathewson
6f75b82ef3
Use Ed25519Identity in microdescriptors.
2020-10-15 12:42:09 -04:00
Nick Mathewson
6b2ba9a16c
Document remaining private members of tor-netdoc.
2020-10-10 16:41:43 -04:00
Nick Mathewson
f8fde02c0b
Document most private items in tor-netdoc.
2020-10-09 18:02:02 -04:00
Nick Mathewson
b845d37b3b
Add routerdesc examples
2020-10-07 13:48:31 -04:00
Nick Mathewson
b3e2086c7b
netdoc: more tests for routerdesc parsing
2020-10-07 13:19:17 -04:00
Nick Mathewson
30f8aead6c
A few more tests in tor-netdoc
2020-10-07 11:34:12 -04:00
Nick Mathewson
0ba8ab9b9a
netdoc: test for signature/key checking func
2020-10-07 10:58:32 -04:00
Nick Mathewson
b371a84a26
mdconsensus: add tests for a few accessors
2020-10-06 15:02:55 -04:00
Nick Mathewson
02e5380a73
tests for some failing cases in mdconsensus
2020-10-06 14:12:43 -04:00
Nick Mathewson
580c1ac567
Tokenize: report accurate positions for more parsing errors
2020-10-02 15:25:28 -04:00
Nick Mathewson
f89283eaa6
microdesc parsing: tests for bad microdescs
2020-10-02 15:24:00 -04:00
Nick Mathewson
ff852df70e
tests and fixes for md content parsing
2020-10-02 14:04:03 -04:00
Nick Mathewson
8c2aae10f7
netdoc: remove some outdated/unused stuff.
2020-10-02 11:21:59 -04:00
Nick Mathewson
1adc6c40fb
authcert: test error recovery.
2020-10-02 10:59:55 -04:00
Nick Mathewson
38685d3cc1
Netdoc: use a more bulletproof pattern to prevent infinite loops
...
Previously our "read a bunch of this kind of document" functions had
a common problem, where they could get into an infinite loop if the
underlying "read this kind of document" function failed without
consuming any tokens.
I _think_ that this error case was unreachable (or else fuzzing
would have found it, right?), but proving that it was unreachable
was a bit fiddly, and I couldn't follow my own arguments about it.
Instead, we just store the position of the reader before we start
reading, and make sure that it has consumed at least some data. If
it hasn't, then we consume and drop a token before advancing to the
next document.
2020-10-02 10:15:14 -04:00
Nick Mathewson
4a1f319ffe
authcert: add tests for several ways certs can fail.
2020-10-02 09:50:47 -04:00
Nick Mathewson
17e82a50c2
authcert: fix an error, and detect mismatched fingerprints
2020-10-02 09:49:27 -04:00
Nick Mathewson
e6ba2ac8ed
netdoc: rename BadVersion to BadTorVersion for clarity
2020-10-01 10:23:22 -04:00
Nick Mathewson
5ff859b89d
improve errors in authcert.rs
2020-10-01 10:21:25 -04:00
Nick Mathewson
a5f382aa61
Remove redundant signature check in authcert parsing.
2020-09-30 18:50:31 -04:00
Nick Mathewson
d4d3e1c3db
More tests on parsing, plus remove dead code.
2020-09-30 18:46:27 -04:00