Nick Mathewson
e749e2bc27
proto: major refactor to channel cells
...
The protocol is now based around a message-oriented scheme intended
to use futures_codec, which in turn uses BytesMut. The transition
to BytesMut is incomplete, and we're not nearly so zero-copy as
intended. We should think about that.
2020-09-06 16:00:14 -04:00
Nick Mathewson
8db525dab4
tor-bytes: Add initial support for the bytes crate
2020-09-05 10:07:23 -04:00
Nick Mathewson
b679ab216c
Make MDConsensus also follow the checkable pattern.
2020-09-03 16:06:45 -04:00
Nick Mathewson
fbb35dc72a
Port authcert to use tor_checkable.
2020-09-03 15:02:36 -04:00
Nick Mathewson
b3358673b5
Migrate certificate and routerdesc checking to tor-checkable
...
Now these types are parsed and returned wrapped inside a checkable
object.
2020-09-03 14:45:46 -04:00
Nick Mathewson
63adba1744
checkable: Add a simple type for self-signed objects.
2020-09-03 11:13:07 -04:00
Nick Mathewson
4ec97aa613
llcrypto: Define a "ValidatableSignature" type
...
This type wraps a signature, a public key, and the signed object.
It's meant to be useful for implementing SelfSigned objects.
2020-09-03 10:34:40 -04:00
Nick Mathewson
481e5e5a63
New module with traits for time-bound and signed objects
...
Too often I've been writing code that defers timeliness checking to
an is_valid_at() method [which you'd better call or else whoops] and
which does signature checking while parsing [not great for
performance].
Instead, let's make return types where you can't get at the interior
object without first either checking the signatures/timeliness, or
declaring that (dangerously) you don't care.
2020-09-01 17:59:58 -04:00
Nick Mathewson
c8602beba9
WANT_FROM_OTHER_CRATES: observations on tls
2020-09-01 15:27:05 -04:00
Nick Mathewson
790d6becf2
Implement an ersatz hash() for RSAIdentity
...
For whatever reason, something I had didn't like me implementing a
custom PartialEq but deriving Hash
2020-08-28 18:16:56 -04:00
Nick Mathewson
4b75c51882
Run cargo-upgrade.
2020-08-28 18:14:17 -04:00
Nick Mathewson
f55f86c6a8
llcrypto: add test vectors for sha3 and shake
2020-08-28 17:47:16 -04:00
Nick Mathewson
4a2e732457
Small readme edit
2020-08-28 13:42:08 -04:00
Nick Mathewson
6fabb54033
netdoc: Parser for microdesc consensus documents
...
There's more to do here, and things to refactor, but this ought to
be enough to get a rudimentary client working.
2020-08-27 14:30:24 -04:00
Nick Mathewson
e221146d9e
llcrypto: make RSAIdentity implement the Hash trait.
2020-08-27 12:54:07 -04:00
Nick Mathewson
86f6f30b6d
netdoc: parse multiple authcerts from a string.
2020-08-27 12:54:07 -04:00
Nick Mathewson
696e7ad334
netdoc: add a check_len method for B64
2020-08-26 10:57:07 -04:00
Nick Mathewson
d4af6a163f
Add a B16 argument type, to mirror B64.
2020-07-20 20:55:47 -04:00
Nick Mathewson
bbb8fea39b
More parsing for fingerprints, including non-spaced fingerprints.
2020-07-20 20:55:47 -04:00
Nick Mathewson
5f00e41a6b
Expose Protocols::new() as public.
2020-07-20 20:55:47 -04:00
Nick Mathewson
8c0bbfef2c
tor-netdoc: Make SectionRules derive Clone.
...
This is going to come in handy for the networkstatus stuff, where I
need to define different variants of SectionRules for votes and
consensuses.
2020-07-20 20:55:47 -04:00
Nick Mathewson
173bec26a5
Update to latest packages; ed25519 now needs signature crate traits.
2020-07-20 20:55:03 -04:00
Nick Mathewson
7bd7e7ec7d
Run cargo fix --edition-idioms
2020-06-26 13:17:14 -04:00
Nick Mathewson
e1bbc2fdb0
Run "cargo update".
2020-06-21 11:14:56 -04:00
Nick Mathewson
c602883881
Use "cargo upgrade" from cargo-edit to list current versions
2020-06-12 21:06:07 -04:00
Nick Mathewson
32ecff11eb
Upgrade to latest version of rsa crate
2020-06-12 21:05:01 -04:00
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