update readme
This commit is contained in:
parent
ee71abe560
commit
567af1a82e
25
README.md
25
README.md
|
@ -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
25
TODO
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue