[noise] Noise library in Go

David Wong davidwong.crypto at gmail.com
Sat Nov 4 07:29:33 PDT 2017

Hello all,

I have a library in Go here: https://github.com/mimoo/NoiseGo/blob/master/noise/

It's in beta, so don't use that in prod.

It's Noise_{N,KK,NX,NK,XX}_25519_ChachaPoly_SHA256 with a minimal
framing done with a 2-byte length header and some code for
authentication of the static keys in X patterns:

* I require peers sending their static keys to provide a proof during
the configuration of the peer. I have helpers to generate a root
ed25519 key that can sign the peer's static public key as a proof.
* I require peers that receive static keys to provide a callback
function that takes whatever payload was sent during the handshake and
the received static key. I have helpers as well that create a callback
function that will verify a signature via a root public key.

The thing is designed to be "plug-and-play". It's implementing the
net.Conn paradigm of the standard library of Go, so whatever you're
already doing with the net package or the crypto/tls package will be
the same with this package.

The library is passing the cacophony test vectors, and I've
successfully tested interoperability (without the framing) with
flynn/noise (another implementation of Noise in Go)

More information about the Noise mailing list