[noise] Noise Explorer: Generate Software Implementations
georgio at symbolic.software
Mon Apr 8 05:02:26 PDT 2019
Under Nadim’s mentorship, I have assisted in enabling Noise Explorer to
generate Rust software implementations for arbitrary Noise Handshake
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:
• Memory safe, functionally correct, and secret independent Curve25519
and ChaCha20Poly1305 operations by using FFI bindings to HACL* reference
• All Hash, Key, Message, and Nonce objects are now constrained to their
appropriate sizes as defined in the specification.
• Clearing operations for Key and Hash objects are strictly
unoptimizable by LLVM and overwrite data with zeros.
• 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.
• Ephemeral Keys are cleared immediately after use in an
• Operations are executed in constant time.
• Keypairs cannot hold anything other than one PrivateKey and one
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
You can try out Noise Explorer’s code generation features directly via the
web application: https://noiseexplorer.com
You can also run Noise Explorer locally by downloading the command-line
We welcome your feedback on this and hope to contribute more soon!
*Symbolic Software • https://symbolic.software <https://symbolic.software/>*
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Noise