Nick Mathewson
0ffa58d2d4
Merge remote-tracking branch 'official/main' into main
2020-06-12 20:05:41 -04:00
Nick Mathewson
d36f52eea9
Mark a variable unused
2020-06-12 20:04:55 -04:00
Nick Mathewson
f1a3841519
curate WANT_FROM_OTHER_CRATES
2020-06-12 14:02:15 -04:00
Nick Mathewson
c7285c9449
Add documentation for authcert parsing.
2020-06-11 17:08:59 -04:00
Nick Mathewson
6264041b77
update to use latest rust-crypto traits and modules
2020-06-10 14:16:07 -04:00
Nick Mathewson
c13728eaa2
Add a couple of commits missing from previous.
2020-06-09 18:46:56 -04:00
Nick Mathewson
3b4c828cb7
netdoc: initial implementation of authority certs.
2020-06-09 17:23:45 -04:00
Nick Mathewson
2d8021420f
netdoc: note a forward-compatibility issue with RSA signatures.
2020-06-09 17:22:49 -04:00
Nick Mathewson
6ff619aab3
netdoc: when parsing from a string, detect extra tokens
2020-06-09 14:06:17 -04:00
Nick Mathewson
4408fc7084
Netdoc: allow parsing multiple routerdescs from a string.
2020-06-09 13:58:43 -04:00
Nick Mathewson
4a5b31d6cd
netdoc: report microdesc errors at correct offsets.
2020-06-09 13:13:34 -04:00
Nick Mathewson
d4f58b0977
netdoc: fix microdesc digest calculation at last.
2020-06-09 13:07:44 -04:00
Nick Mathewson
47c3a11d2c
Add a "first_item" entry for Section.
...
This will make it simpler to implement digests for sections.
2020-06-09 12:44:24 -04:00
Nick Mathewson
96f3d8c846
Add a "last_item" entry for Section.
...
This will make it simpler to implement digests for sections.
2020-06-09 12:39:07 -04:00
Nick Mathewson
ad79778a39
netdoc: recover from microdesc parsing errors
...
On an error, advance to the start of the next microdesc.
There's a possible issue with this approach where if we aren't
careful, we might wind up in an infinite loop. I've made a comment
about the fragility here, but it would probably be good to revisit
this design.
2020-06-08 11:52:26 -04:00
Nick Mathewson
624843668a
netdoc: add an iterator that can parse annotated microdescs
2020-06-07 18:57:26 -04:00
Nick Mathewson
78aa76ab36
Implement parsing for microdescriptor annotations
...
This patch also updates the microdescriptor parsing so we can handle
a whole bunch of them in a row.
2020-06-06 20:51:22 -04:00
Nick Mathewson
1e8bde2c45
netdoc: fix behavior when using a fancy closure with PauseAt.
...
Previously, every call to peek() or next() would call self.pred().
But this would run us into trouble if we were using a closure that
had mutable state, since it would stop us from checking for things
like "the third occurrence of the foo token".
Now we store the value of self.pred(self.peek()).
2020-06-06 17:13:06 -04:00
Nick Mathewson
fe93263d35
netdoc: add annotation fields for microdescriptors
2020-06-06 15:31:03 -04:00
Nick Mathewson
b3f2e273c5
note that microdescriptor sha256 calculation is wrong
2020-06-03 17:26:18 -04:00
Nick Mathewson
5d0990658a
Restore a pause_at() method, but for NetDocReader.
2020-06-03 17:24:14 -04:00
Nick Mathewson
81f67e240b
Remove the Pausable trait as busted.
...
We need to have the Peekable be long-lived, so we can't consume it.
We _could_ create a second Peekable, which is apparently what we
have been doing, but that breaks down when we try to do it again.
2020-06-03 17:08:47 -04:00
Nick Mathewson
bc6d1b2228
netdoc: Refactor iteration over tokens.
...
I want the "peekable iterator" type to be passed around a lot, and
it needs to have some way to get at the string that's used with it.
2020-06-03 12:45:17 -04:00
Nick Mathewson
9742f3ac42
Netdoc: tweak definition for keywords to accommodate annotations
...
The macro can now define annotations that don't count as regular
keywords. Additionally, the Keyword trait is now tweaked to take
advantage of the fact that every Keyword is Copy.
2020-05-27 13:09:22 -04:00
Nick Mathewson
75d24e6742
llcrypto: test vectors for sha2
2020-05-21 13:27:48 -04:00
Nick Mathewson
56b9e3fbc6
netdoc: exit an object if we encounter non-base64.
...
This way, an unterminated base64 object doesn't "eat" the whole rest
of something we're trying to parse.
2020-05-20 13:04:28 -04:00
Nick Mathewson
0e40748e4d
netdoc: tokenizer should always consume bytes if they exist.
...
Also document that it always consumes a positive integer number of
lines.
This is part of an effort to improve error recovery.
2020-05-20 12:24:31 -04:00
Nick Mathewson
0f5915915b
netdoc: Teach tokenizer about annotations.
...
I'm not sure that annotations are a feature I want to keep
long-term, but for now it would be useful if this code can also read
Tor's file formats for network directories.
2020-05-19 14:06:19 -04:00
Nick Mathewson
c427b26fe7
netdoc: Add convenience methods for pausing iterators
2020-05-19 12:14:13 -04:00
Nick Mathewson
8468c8ec49
netdoc: move keyword into Item type.
...
This saves us from having to check specific strings in most cases.
2020-05-19 12:01:06 -04:00
Nick Mathewson
e3d68d6db6
netdoc: Extract keyword into its own file.
2020-05-19 11:43:15 -04:00
Nick Mathewson
006efbffbc
start a test for microdesc parsing.
2020-05-18 14:41:23 -04:00
Nick Mathewson
2adbcf1a79
tor-netdoc: add a peek() method to util::Pausable.
2020-05-16 10:46:06 -04:00
Nick Mathewson
a8be828beb
Implement microdescriptor parsing.
...
Additionally, move and refactor related types to reduce friction for
microdescriptor parsing implementation.
2020-05-15 19:25:40 -04:00
Nick Mathewson
fa064717b3
tor-netdoc: Move RelayFamily into its own module.
2020-05-15 16:50:32 -04:00
Nick Mathewson
86894926aa
tor-proto: use caret_int!() for cell and relay commands.
2020-05-15 16:27:03 -04:00
Nick Mathewson
085a8250e7
tor_cert: use caret_int!() to make real types for cert elements
2020-05-15 16:07:02 -04:00
Nick Mathewson
1bb564024c
Add a new caret_int!() macro for use with integer-wrapping types
...
Unlike caret_enum!, these types are for use with things like cell
commands or certificate types, where the entire space of integer
values is possible, and only some are recognized.
2020-05-15 15:40:58 -04:00
Nick Mathewson
8f20c273cf
tor-netdoc: extract fingerprint logic from routerdesc.rs
2020-05-15 14:40:53 -04:00
Nick Mathewson
84fd65fb85
netdoc: Improve parsing implementation for RelayFamily.
2020-05-15 14:06:22 -04:00
Nick Mathewson
c1d6a74756
netdoc: Relax error types that can be used when parsing.
2020-05-15 14:01:50 -04:00
Nick Mathewson
0427abcee2
netdoc: teach MaybeItem about parse_args_as_str().
...
This simplifies a couple of places in routerdesc parsing.
2020-05-15 13:44:53 -04:00
Nick Mathewson
ebfeefeba8
tor-netdoc: Extract family parsing into its own function.
2020-05-15 13:34:45 -04:00
Nick Mathewson
b19d480558
Extract RelayPlatform parsing.
2020-05-15 13:22:39 -04:00
Nick Mathewson
c7d0d27754
netdoc: get positions right in version parsing.
2020-05-15 13:22:15 -04:00
Nick Mathewson
60adff1fd7
netdoc: use improved API for parsing ed25519 certificates.
2020-05-15 11:49:49 -04:00
Nick Mathewson
332b9de542
netdoc: use new router object parsing API for RSA public keys.
2020-05-15 11:20:57 -04:00
Nick Mathewson
f6dd702316
Netdoc: better parsing for objects.
...
If I'm right this will let us simplify our code for parsing things
from directory objects by a lot.
2020-05-15 11:18:04 -04:00
Nick Mathewson
9b581588d6
Remove 'idx' field from BadArgument.
...
Having byte-level positions means we don't need to complain about
particular arguments.
2020-05-15 10:37:29 -04:00
Nick Mathewson
d82cb7e5d1
netdoc: remove ArgError.
2020-05-15 08:47:32 -04:00