<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<blockquote type="cite">On Mar 11, 2018, at 5:49 PM, Trevor Perrin <trevp@trevp.net> wrote:<br>
<br>
In the Accept case, the prologue that both parties use is:<br>
<br>
"NoiseSocketInit1" || init_negotiation_data_len || init_negotiation_data<br>
<br>
Where init_negotiation_data refers to the initiator's first message.<br>
<br>
At least that's how it's spec'd.  Hopefully that's what the Golang code does?</blockquote>
Yes it is and that’s how I’m keeping it.
<div><br>
<blockquote type="cite">Not sure what you mean by "received a Init2".  The prologue labels<br>
"NoiseSocketInit1" etc aren't sent on the wire.  The prologue is just<br>
an input to hashing, it's not transmitted.<br>
</blockquote>
<div>That’s right, I realized this 30 seconds after sending this mail.</div>
<br>
<blockquote type="cite">After sending it's initial messages, the initiator will receive a<br>
single NoiseSocket response message, containing some negotiation_data<br>
(might be zero-length) and a Noise message (might be zero-length).<br>
<br>
If the negotiation_data is zero-length, that means the responder<br>
accepted the initiator's initial_protocol.  If the negotiation_data is<br>
non-zero-length, it contains a NoiseLingoNegotiationDataResponse<br>
protobuf, which the initiator parses to determine whether this is a<br>
Switch, Retry, or Reject case.<br>
<br>
Hope that helps?<br>
<br>
<br>
<br>
</blockquote>
</div>
</body>
</html>