[noise] Noise Explorer: Generate Software Implementations

Trevor Perrin trevp at trevp.net
Thu Jan 24 02:12:18 PST 2019


On Wed, Jan 16, 2019 at 8:48 PM Nadim Kobeissi <nadim at symbolic.software> wrote:
>
> Q3: Can I help integrate my own language?
> A3: You should be able to but you'll need to do some tinkering. Noise Explorer does indeed use a modular, template-based framework, but despite my attempts to clean it up as much as possible it's still fairly opinionated and sometimes arbitrary. You can try, and you will likely succeed, but you will need to decipher the templates yourself. Happily, it's not very hard to do so.

Cool,

There's a lot of "templatized" similarity in the output for different patterns.

Could we take this all the way to a simple templating system?

For example, given the following files:

<file>.file_start.txt
<file>.message_start.txt
<file>.token_ss.txt
<file>.token_se.txt
<file>.token_es.txt
<file>.token_ee.txt
<file>.message_end.txt
<file.file_end.txt

A simple templating tool could concatenate them into a single <file>
in this order:
  file_start
  for MESSAGENUM=0..TOTALMESSAGES:
    message_start
    for TOKEN in pattern:
      token_<TOKEN>
    message_end
  file_end

It would also do string replacement within each file, substituting
{{CIPHER}} with AES256, {{PATTERN}} with XX etc, and substituting
{{MESSAGENUM}} with an integer.

The hope is this would be sufficient to define some helper functions,
then define some readMessageX/writeMessageX functions whose bodies are
just unrolled sequences of MixKey / MixHash as defined by the tokens.
By being really simple it would entice people to add new languages.

It might be a good exercise to try to regenerate your files in such a
simple way.  And/or take existing Noise libraries and try to generate
templatized/unrolled versions of them, to see where this breaks down.


> Q7: Any other future plans for Noise Explorer?
> A7: No. The only things I have on my plate are what was listed above:
>     - WASM, Rust and F* support.
>     - More comprehensive automated test suites for generated implementations.
>     - Cipher suite support.
>     - Keep everything up to spec with upcoming official revisions to the Noise Protocol Framework.

I know you want Noise Explorer to track the official revisions to
spec.  But it would be very useful to get unofficial proposals
analyzed (like ss/noss and sig, at the moment).  Is there a way we
could put these in an "experimental" part of Noise Explorer to
emphasize they're not to be used, but just for helping our design
process?

Trevor


More information about the Noise mailing list