Enable and use ntorv3 (prop332)
Some of the core crypto appears to be implemented, but it isn't "wired up" for use.
Needed for #1067
-
Implement ClientHandshaketrait for client side of ntor-v3 -
Implement ServerHandshaketrait for server side of ntor-v3 -
Add tor_proto::circuit::Reactor::create_firsthop_ntor_v3 -
Add tor_proto::circuit::PendingClientCirc::create_firsthop_ntor_v3 -
When creating or extending a circuit to a relay that supports Relay=4(as advertised in its descriptor), do an ntorv3 handshake (CREATE2orEXTEND2cell withHTYPE=3) as spec'd in https://spec.torproject.org/tor-spec/create-created-cells.html#ntor-v3 and https://tpo.pages.torproject.net/core/torspec/tor-spec/subprotocol-versioning.html?highlight=ntorv3#relay- TODO: File a ticket for working out how to use ntorv3 with a relay that isn't in the client's consensus; probably as part of prop346
-
Add shadow(?) integration test validating successful ntorv3 handshakes with tor -
Change ClientHandshaketrait API to includentor_v3features (withntorimplementation expecting and returning empty sets)
Edited by Jim Newsome