All Data Structures Files Functions Variables Typedefs Macros Groups Pages
Noise-C Documentation

Table of Contents

Noise-C is a plain C implementation of the Noise Protocol, intended as a reference implementation. It can also be referred to as "Noisy", which is what you get when you say "Noise-C" too fast. The code is distributed under the terms of the MIT license, with the code available from github.

This project is still a work in progress. There is still a lot of cleaning up and example writing to do.

The initial target is GNU/Linux systems, because that's what I have, but contributions are definitely welcome to make the code work on other platforms. Desktop systems will be targeted first and then embedded systems. "Make It Work And Then Make It Work Better" is my motto.

Supported Patterns and Algorithms

Note that the post-quantum "NewHope" algorithm only works with the "NN" handshake pattern because it does not support long-term static keys. For more information, see the Post-Quantum Noise with New Hope page on the Noise wiki.

Major API's

Supporting API's

Other information

Directory structure


The library uses autoconf and automake for the Makefile structure. You will need to have these installed to build from the sources in the git repository. Bison and Flex are also requred to build the noise-protoc protobuf compiler.

To build the library under GNU/Linux and run the tests, type the following:

$ autoreconf -i
$ ./configure
$ make
$ make check

The following parameters can be supplied to configure to select other crypto back ends:

Both options can be combined to get the best of both worlds.


In no particular order:

Contributions are welcome to help implement any of these.


For more information on this library, to report bugs, to contribute, or to suggest improvements, please contact the author Rhys Weatherley via e-mail.