111 lines
2.9 KiB
Plaintext
111 lines
2.9 KiB
Plaintext
KEY:
|
|
- Not done
|
|
. Partially done
|
|
o complete
|
|
X Won't do.
|
|
|
|
|
|
|
|
- Decisions
|
|
- Which protocols to support?
|
|
- How far up the stack to go?
|
|
- How speculative to get?
|
|
|
|
- Specs
|
|
- Test vectors
|
|
. Add test vectors for ntor
|
|
- Add test vectors for relay crypto
|
|
- Add test vectors for hs-ntor
|
|
- Add test vectors for hs-relay crypto
|
|
- Add test vectors for TAP
|
|
- Clarity
|
|
- END cell format
|
|
- Directory consistency
|
|
- "-----BEGIN" should not be a valid keyword
|
|
- Whitespace at start of line, y/n? Mixed whitespace, y/n? CR, y/n?
|
|
- UTF-8.
|
|
|
|
- Primitive crypto
|
|
- Wrap x25519 in a trait
|
|
- 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
|
|
o test vectors for sha2
|
|
o test vectors for sha3/shake
|
|
- RSA test vectors as needed
|
|
|
|
- Higher level crypto
|
|
- Test vectors for hmac
|
|
- Test vectors for tap-kdf
|
|
- Test vectors for hkdf
|
|
- Test vectors for other kdfs
|
|
|
|
- Main Protocol functionality
|
|
o encode and decode regular cell types.
|
|
. handshakes
|
|
o ntor
|
|
. relay crypto
|
|
o implement
|
|
- tests
|
|
- Internals:
|
|
- Consider using a safer thing instead of current bytereader. Like the
|
|
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.
|
|
- Use "bytes" crate more natively in tor-bytes trait.
|
|
- Tests
|
|
- For all cell types
|
|
- for all relay cell types
|
|
- For all handshakes
|
|
- State for multiplexing circuits on a connection
|
|
- State for sending sendme cells, both versions.
|
|
- V1 sendmes
|
|
- State for managing streams
|
|
- Initial protocol handshake for client/relay authentication
|
|
- Initial protocol handshake for relay/relay authentication
|
|
|
|
- Directory parsing stuff
|
|
. Parsing backend
|
|
- Match tor's actual token behavior?
|
|
- Parse consensus directories, both variants.
|
|
- Apply consensus diffs
|
|
|
|
- Directory encoding stuff
|
|
- Encoding/signing backend
|
|
- Encode descriptors
|
|
|
|
- Additional small functionality, protocol level
|
|
- Relay padding
|
|
|
|
- HS functionality
|
|
- encode and decode hs cell types
|
|
- State as needed for hs lookup
|
|
- hs cell types
|
|
- hs directory stuff
|
|
- HSv3 directory obejcts, encode
|
|
- HSv3 directory objects, decode
|
|
- crypto variants
|
|
- hsv3 variant of relay crypto
|
|
- hsv3 variant of ntor
|
|
- tests and vectors for the above.
|
|
|
|
X Not currently planning to do:
|
|
X Link protocol v1 (multicert)
|
|
X Link protocol v2 (renegotiation)
|
|
|
|
- Unsure if planning to do:
|
|
X Link protocol v3 (short circuit IDs, PK comparison)
|
|
- Linkauth 1 (RSA-SHA256-TLSSecret)
|
|
- Parsing votes
|
|
- HSv2 directory support
|
|
- Supporting relays without ed25519 keys.
|
|
- Compute consensus diffs
|
|
|
|
- Waiting on RSA-OAEP:
|
|
- Handshakes
|
|
- TAP
|
|
- HSv2 handshakes
|