<div dir="ltr">Hi folks,
<div><br></div><div>Now that Trevor has merged HKDF to master, I'll share my implementation, attached here. Please do let me know if you find any mistakes in it. It should be pretty short and sweet.</div><div><br></div><div>Note that it makes the following deviations from Trevor's specification:</div><div><ul style="margin-top:15px;margin-right:0px;margin-left:0px;padding-left:30px;color:rgb(51,51,51);font-family:sans-serif;font-size:14px;line-height:22.4px;margin-bottom:0px!important"><li><code style="margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);border-radius:3px;white-space:nowrap;background-color:rgb(248,248,248)">Blake2b</code> is used instead of <code style="margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);border-radius:3px;white-space:nowrap;background-color:rgb(248,248,248)">SHA2-256</code> as a <code style="margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);border-radius:3px;white-space:nowrap;background-color:rgb(248,248,248)">HASH</code> function.<ul style="margin:0px;padding-left:30px"><li>For <code style="margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);border-radius:3px;white-space:nowrap;background-color:rgb(248,248,248)">HASH</code>, it is truncated to 32 bytes.</li><li>For <code style="margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);border-radius:3px;white-space:nowrap;background-color:rgb(248,248,248)">HKDF</code>, the full 64 bytes are used.</li></ul></li><li>Little endian is used for all fields instead of big endian.</li><li>No explicit outer-length parameter, since the outer and enclosed IP packets already have relevent lengths.</li><li>There is no maximum length limit, though the MTU controls this implicitly.</li><li>The first handshake message contains a timestamp, to prevent replay attacks, as part of its payload.</li></ul><br>Looking forward to hearing some feedback.<br><br>Jason</div></div>