- Additional RELAY_COMMAND_* types for clients to request out-of-band
HMAC request cells for Proposal 253.
Do you need to request that data? How about always sending it from middle nodes? (Less leakage about the client.)
- Additional RELAY_COMMAND_* opcodes for clients to request padding
from relays (for an upcoming padding negotiation proposal).
However, for items #3 and #4, if I introduce a new RELAY_COMMAND type and send it to a relay that doesn't support it, then that relay will emit a warning log message from connection_edge_process_relay_cell() in relay.c. How should I detect support? Based on advertised relay version in the consensus? What about non-standard relay implementations that don't use Tor's versioning?
I don't think you can use the consensus for this: for HS connections you wont have any relay info.
Wouldn't matter for 4, right?
How about introducing very basic version info into created2/extended/rendezvous cells? You'd have to be really careful to not leak too much version info, of course.
It seems much better to avoid that, if there is a workaround.