diff --git a/README.md b/README.md index d5efd9008..f9bcd4f83 100644 --- a/README.md +++ b/README.md @@ -10,36 +10,49 @@ also short for "artifact". It has nothing to do with the ## What's here and what isn't. So far the code has untested or under-tested implementations of: - * the ntor protocol - * the relay crypto algorithm - * parsing and encoding all the cell types (except for hs-related + + * the ntor protocol + * the relay crypto algorithm + * parsing and encoding all the cell types (except for hs-related ones) - * parsing and validating ed25519 certificates - * parsing and validating router descriptors + * parsing and validating ed25519 certificates + * parsing and validating router descriptors Before I share it, I think it needs more work on: - * parsing the other kinds of network documents - * link authentication - * a sensible api for cell types - * a toy client that builds a circuit through the network + + * parsing the other kinds of network documents + * link authentication + * a sensible api for cell types + * a toy client that builds a circuit through the network and uses it to exit. There is no support yet for: - * Actually connecting to the network in a reasonable way - * choosing paths through the network in a reasonable way - * doing anything with the network in a reasonable way - * actually building circuits - * creating network documents - * v2 onion service anything - * v3 onion service anything - * the directory protocol - * lots of optimizations that Tor does - * working with no_std + + * Actually connecting to the network in a reasonable way + * choosing paths through the network in a reasonable way + * doing anything with the network in a reasonable way + * actually building circuits + * creating network documents + * v2 onion service anything + * v3 onion service anything + * the directory protocol + * lots of optimizations that Tor does + * working with no_std I do not plan to implement full versions of any of those before I share this code for more comment, though I might do a little. Who knows? +## What can I do? + +You can build this all with `cargo build`. + +You can run the tests, such as they are, with `cargo test`. + +You can make documentation with `cargo doc`. I prefer +`cargo doc --no-deps --document-private-items`, to include documentation for +private members but not for dependencies. + ## Caveat haxxor: what to watch out for This is a work in progress. It doesn't "do Tor" yet, and what parts @@ -72,33 +85,26 @@ lot by the time we're done. The current crates are: -caret -: A utility for generating enumerations with helpful trait +`caret`: A utility for generating enumerations with helpful trait implementations -tor-llcrypto -: Wrappers and re-imports of cryptographic code that Tor needs in +`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 -tor-bytes -: Byte-by-byte encoder and decoder functions and traits. We use +`tor-bytes`: Byte-by-byte encoder and decoder functions and traits. We use this to safely parse cells, certs, and other byte-oriented things. -tor-cert -: Decoding and checking signatures on Tor's ed25519 certificates. +`tor-cert`: Decoding and checking signatures on Tor's ed25519 certificates. -tor-protover -: Minimal implementation of the Tor subprotocol verisoning system. -Less complete than the one in Tor's current src/rust, but more +`tor-protover`: Minimal implementation of the Tor subprotocol verisoning +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 +`tor-netdoc`: Parsing for Tor's network documents. Currently only handles routerdescs. Underdocumented and too big. needs splitting. -tor-proto -: Functions to work with cell types, handshakes, and other aspects +`tor-proto`: Functions to work with cell types, handshakes, and other aspects of the Tor protocol. Underdocumented, too big, needs refactoring.