<div dir="ltr"><div dir="ltr"><div>Hello everyone,</div><div><br></div><div>Under Nadim’s mentorship, I have assisted in enabling Noise Explorer to generate Rust software implementations for arbitrary Noise Handshake Patterns.</div><div><br></div><div>In addition to Noise Explorer’s existing support for generating Go implementations, anyone can now generate enhanced implementations in Rust that provide the following guarantees, in addition to Rust’s memory safety and performance features:</div><div><br></div><div>•    Memory safe, functionally correct, and secret independent Curve25519 and ChaCha20Poly1305 operations by using FFI bindings to HACL* reference implementations.</div><div>•    All Hash, Key, Message, and Nonce objects are now constrained to their appropriate sizes as defined in the specification.</div><div>•    Clearing operations for Key and Hash objects are strictly unoptimizable by LLVM and overwrite data with zeros.</div><div>•    Nonce objects can only be incremented after successful encryption/decryption and their constructor/destructor functions are called exclusively and simultaneously with those of a wrapping CipherState.</div><div>•    Ephemeral Keys are cleared immediately after use in an encryption/decryption operation.</div><div>•    Operations are executed in constant time.</div><div>•    Keypairs cannot hold anything other than one PrivateKey and one PublicKey.</div><div><br></div><div>We are also planning to support targeting WebAssembly from the generated Rust code, as well as no_std which would allow us to compile for embedded devices.</div><div><br></div><div>You can try out Noise Explorer’s code generation features directly via the web application: <a href="https://noiseexplorer.com">https://noiseexplorer.com</a></div><div><br></div><div>You can also run Noise Explorer locally by downloading the command-line tool: <a href="https://github.com/symbolicsoft/noiseexplorer">https://github.com/symbolicsoft/noiseexplorer</a></div><div><br></div><div>We welcome your feedback on this and hope to contribute more soon!<br><br>Georgio Nicolas<br><i>Symbolic Software <span style="color:rgb(0,0,0);white-space:pre-wrap">• <a href="https://symbolic.software/">https://symbolic.software</a></span></i></div></div></div>