update readme

This commit is contained in:
Nick Mathewson 2020-09-09 19:27:47 -04:00
parent ee71abe560
commit 567af1a82e
2 changed files with 24 additions and 26 deletions

View File

@ -22,15 +22,15 @@ So far the code has untested or under-tested implementations of:
* the ntor protocol
* the relay crypto algorithm [cruddy vesion]
* parsing and encoding all the cell types (except for hs-related
ones). [cruddy version]
ones)
* parsing and validating ed25519 certificates
* parsing and validating router descriptors
* parsing and validating microdescriptors
* parsing and validating microdesc consensuses
* link authentication (client->server type)
Before I share it, I think it needs more work on:
* link authentication (client->server type)
* refactoring everywhere
* lots of tests
* a sensible api for cell types
@ -123,7 +123,7 @@ implementations
`tor-llcrypto`: Wrappers and re-imports of cryptographic code that Tor needs in
various ways. Other crates should use this crate, and not actually
use any crypto crates directly
use any crypto crates directly.
`tor-bytes`: Byte-by-byte encoder and decoder functions and traits. We use
this to safely parse cells, certs, and other byte-oriented things.
@ -134,12 +134,23 @@ this to safely parse cells, certs, and other byte-oriented things.
system. Less complete than the one in Tor's current src/rust, but more
simple.
`tor-netdoc`: Parsing for Tor's network documents. Currently only handles
routerdescs. Underdocumented and too big. needs splitting.
`tor-netdoc`: Parsing for Tor's network documents. Underdocumented and too
big.
`tor-linkspec`: Traits and types for connecting and extending to Tor relays.
`tor-proto`: Functions to work with cell types, handshakes, and other aspects
of the Tor protocol. Underdocumented, too big, needs
refactoring.
of the Tor protocol. This crate is NOT ALLOWED to have any dependencies on
specific TLS libraries or async environments; those have to happen at a
higher level.
`tor-netdir`: Wraps tor-netdoc to expose a "tor network directory" interface.
Doesn't touch the network itself. Right now it only handles microdesc-based
directories, and reads all its information from disk.
`client-demo`: A simple tor client program. Right now it requires that you
already have a datadir full of directory information. It does a client->relay
handshake, then stops.
## Intended architecture

25
TODO
View File

@ -27,13 +27,14 @@ X Won't do.
- Primitive crypto
- Wrap x25519 in a trait
- Use signature trait for ed25519.
- Use signature trait for ed25519?
- Ed25519 needs to have an "identity" non-parsed version, maybe.
o Add RSA-pkcs1 signature support
o Add RSA-pem encode/decode support
- RSA-oaep, if supported.
o test vectors for sha1
- test vectors for sha2
- test vectors for sha3/shake
o test vectors for sha2
o test vectors for sha3/shake
- RSA test vectors as needed
- Higher level crypto
@ -54,9 +55,7 @@ X Won't do.
one rustls has? Like "untrusted"?
- Consider using a writer trait that's agnostic about whether it's
writing into an expanding Vec or a fixed slice.
- Good API for "make this cell and encrypt it and write it"
- Good API for "take a cell out of a Reader" and stuff that comes after.
- Async variant of that API?
- Use "bytes" crate more natively in tor-bytes trait.
- Tests
- For all cell types
- for all relay cell types
@ -70,20 +69,8 @@ X Won't do.
- Directory parsing stuff
. Parsing backend
o Get tokens
- Match tor's actual token behavior?
o Remove extraneous hoohaw.
o Get a "parse into a vector of maybe-tokens" thing.
o Get a "validate that every must-token is there" thing.
o Macro for making a Keyword type.
- Parse descriptors
o Parse into a reasonable routerdesc object.
- Parse a pile of them.
o Check ed signatures on router descriptors
o Check rsa signatures on descriptors
o Check additional invariants?
- Parse consensus directories, both variants.
- Parse microdescs
- Apply consensus diffs
- Directory encoding stuff
@ -110,7 +97,7 @@ X Not currently planning to do:
X Link protocol v2 (renegotiation)
- Unsure if planning to do:
- Link protocol v3 (short circuit IDs, PK comparison)
X Link protocol v3 (short circuit IDs, PK comparison)
- Linkauth 1 (RSA-SHA256-TLSSecret)
- Parsing votes
- HSv2 directory support