summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* netdoc: fix microdesc digest calculation at last.Nick Mathewson2020-06-092-13/+21
|
* Add a "first_item" entry for Section.Nick Mathewson2020-06-091-2/+19
| | | | This will make it simpler to implement digests for sections.
* Add a "last_item" entry for Section.Nick Mathewson2020-06-091-1/+20
| | | | This will make it simpler to implement digests for sections.
* netdoc: recover from microdesc parsing errorsNick Mathewson2020-06-082-3/+56
| | | | | | | | | 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.
* netdoc: add an iterator that can parse annotated microdescsNick Mathewson2020-06-072-1/+127
|
* Implement parsing for microdescriptor annotationsNick Mathewson2020-06-062-4/+53
| | | | | This patch also updates the microdescriptor parsing so we can handle a whole bunch of them in a row.
* netdoc: fix behavior when using a fancy closure with PauseAt.Nick Mathewson2020-06-061-14/+54
| | | | | | | | | 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()).
* netdoc: add annotation fields for microdescriptorsNick Mathewson2020-06-061-1/+8
|
* note that microdescriptor sha256 calculation is wrongNick Mathewson2020-06-031-0/+2
|
* Restore a pause_at() method, but for NetDocReader.Nick Mathewson2020-06-032-4/+24
|
* Remove the Pausable trait as busted.Nick Mathewson2020-06-032-41/+14
| | | | | | 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.
* netdoc: Refactor iteration over tokens.Nick Mathewson2020-06-034-22/+52
| | | | | 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.
* Netdoc: tweak definition for keywords to accommodate annotationsNick Mathewson2020-05-274-7/+23
| | | | | | 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.
* llcrypto: test vectors for sha2Nick Mathewson2020-05-211-2/+44
|
* netdoc: exit an object if we encounter non-base64.Nick Mathewson2020-05-201-0/+24
| | | | | This way, an unterminated base64 object doesn't "eat" the whole rest of something we're trying to parse.
* netdoc: tokenizer should always consume bytes if they exist.Nick Mathewson2020-05-201-7/+14
| | | | | | | Also document that it always consumes a positive integer number of lines. This is part of an effort to improve error recovery.
* netdoc: Teach tokenizer about annotations.Nick Mathewson2020-05-192-11/+27
| | | | | | 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.
* netdoc: Add convenience methods for pausing iteratorsNick Mathewson2020-05-192-11/+39
|
* netdoc: move keyword into Item type.Nick Mathewson2020-05-195-51/+61
| | | | This saves us from having to check specific strings in most cases.
* netdoc: Extract keyword into its own file.Nick Mathewson2020-05-197-46/+50
|
* start a test for microdesc parsing.Nick Mathewson2020-05-182-0/+21
|
* tor-netdoc: add a peek() method to util::Pausable.Nick Mathewson2020-05-161-0/+19
|
* Implement microdescriptor parsing.Nick Mathewson2020-05-157-1/+200
| | | | | Additionally, move and refactor related types to reduce friction for microdescriptor parsing implementation.
* tor-netdoc: Move RelayFamily into its own module.Nick Mathewson2020-05-153-22/+30
|
* tor-proto: use caret_int!() for cell and relay commands.Nick Mathewson2020-05-154-175/+157
|
* tor_cert: use caret_int!() to make real types for cert elementsNick Mathewson2020-05-155-68/+75
|
* Add a new caret_int!() macro for use with integer-wrapping typesNick Mathewson2020-05-152-119/+202
| | | | | | 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.
* tor-netdoc: extract fingerprint logic from routerdesc.rsNick Mathewson2020-05-152-20/+57
|
* netdoc: Improve parsing implementation for RelayFamily.Nick Mathewson2020-05-151-5/+5
|
* netdoc: Relax error types that can be used when parsing.Nick Mathewson2020-05-152-7/+34
|
* netdoc: teach MaybeItem about parse_args_as_str().Nick Mathewson2020-05-152-13/+13
| | | | This simplifies a couple of places in routerdesc parsing.
* tor-netdoc: Extract family parsing into its own function.Nick Mathewson2020-05-152-20/+25
|
* Extract RelayPlatform parsing.Nick Mathewson2020-05-151-13/+17
|
* netdoc: get positions right in version parsing.Nick Mathewson2020-05-151-6/+6
|
* netdoc: use improved API for parsing ed25519 certificates.Nick Mathewson2020-05-153-34/+80
|
* netdoc: use new router object parsing API for RSA public keys.Nick Mathewson2020-05-151-28/+12
|
* Netdoc: better parsing for objects.Nick Mathewson2020-05-152-0/+63
| | | | | If I'm right this will let us simplify our code for parsing things from directory objects by a lot.
* Remove 'idx' field from BadArgument.Nick Mathewson2020-05-154-13/+11
| | | | | Having byte-level positions means we don't need to complain about particular arguments.
* netdoc: remove ArgError.Nick Mathewson2020-05-152-44/+23
|
* netdoc: Make args_as_vec() non-public.Nick Mathewson2020-05-131-1/+1
| | | | It returns a Ref, and that's kinda implementation-dependent.
* Improve reported positions of parsing errors.Nick Mathewson2020-05-132-5/+39
|
* netdoc: remove the Item::off field as redundantNick Mathewson2020-05-133-11/+73
| | | | | Now that we are okay with using slice offset pointer math, we can remove the 'off' field from Item entirely.
* netdoc: rename Position to Pos.Nick Mathewson2020-05-134-55/+55
| | | | We use this type a lot, so let's give it a short name.
* netdoc: use a more flexible error-position type based on raw pointersNick Mathewson2020-05-131-1/+32
| | | | | Astonishingly, this is safe, though I wish that it were impossible to use mismatched strings.
* netdoc: Add an "at()" method to replace an error's location.Nick Mathewson2020-05-131-0/+9
|
* routerdesc: enforce position of identity-ed25519.Nick Mathewson2020-05-122-11/+19
|
* tor-proto: Simplify ct::lookup API.Nick Mathewson2020-05-102-10/+7
|
* One more disclaimer in the READMENick Mathewson2020-05-091-0/+8
|
* improve the README a littleNick Mathewson2020-05-091-3/+27
|
* Document most of tor-protoNick Mathewson2020-05-0911-12/+239
| | | | (except for the worst parts that need refactoring the most)