[noise] Transport protocol spec finalizing
trevp at trevp.net
Fri Jul 14 01:37:33 PDT 2017
On Fri, Jul 14, 2017 at 8:11 AM, Alexey Ermishkin <scratch.net at gmail.com> wrote:
> Yes, that's seems legit.
> However I'd like to talk about the term "server_version != client_version"
> If we use negotiation_data, we might put all necessary info into it and use version as, well, version.
> For example if we wanted to support a broader range of available options, suggested by NoiseC,
> we would have to put 5 or 6 enums into 4 byte version and I guess the number will only increase over time.
> So, would it be more correct to say that the way server is able to switch to another protocol is not only by changing version but also by supplying an additional negotiation_data without having to change the version?
Should we remove the version field?
For handshake messages after ClientHello, the rules could be:
If noise_message is non-empty:
- If negotiation_data is empty, the sender accepted the previous
- If negotiation_data is non-empty, the sender has switched to a
different Noise protocol
If noise_message is empty:
- The sender is rejecting the previous Noise protocol, and can send
error or retry data in the negotiation_data. The sender may leave the
connection open so the recipient can try again.
(Of course, you could add your own version field or enums etc in
More information about the Noise