<div dir="ltr"><div>This is a specification, your code does not have to do exactly this so long as it is equivalent.</div><div>Obviously staying close is useful and you should reference the differences in comments, but</div><div>you don't have to be literal.<br></div><div><br></div><div>Justin</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 1 May 2020 at 16:35, Mike Hearn <<a href="mailto:mike@plan99.net">mike@plan99.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div><div style="display:none;border:0px none;width:0px;height:0px;overflow:hidden"><img alt="" style="display: none; border: 0px none; width: 0px; height: 0px; overflow: hidden;" width="1" height="0"></div><div><div>During a code review a colleague flagged an issue that I don't have a great answer for.<br></div><div><br></div><div> The Noise spec requires that the EncryptWithAd operation might not actually encrypt, if it's called before the key is set. This seems surprising and potentially a source of subtle bugs. I'd have expected an error to be signalled if you attempt an encryption or decryption operation without a key.<br></div><div><br></div><div>It appears it's defined this way to make WriteMessage simpler when processing an initial key in the first part of a handshake, before any DH operation has run. Everything being written out can be passed through EncryptAndHash without a special case for the position where no key is available. But translated directly to code this results in a rather odd exception inside the core encryption codepath which just looks all wrong. My colleague was right to flag it, even though the overall protocol and algorithm is correct.<br></div><div><br></div><div>Perhaps a future spec revision could adjust the definition of WriteMessage to fork the codepath depending on if 'k' is set, before CipherState is invoked?<br></div><div><br></div><div>thanks,<br></div><div>-mike</div></div><br><div></div></div></div></div>
_______________________________________________<br>
Noise mailing list<br>
<a href="mailto:Noise@moderncrypto.org" target="_blank">Noise@moderncrypto.org</a><br>
<a href="https://moderncrypto.org/mailman/listinfo/noise" rel="noreferrer" target="_blank">https://moderncrypto.org/mailman/listinfo/noise</a><br>
</blockquote></div>