[noise] writing a Rust sans-IO Noise protocol

dawuud dawuud at riseup.net
Sun May 27 14:12:28 PDT 2018


Hi,

I am currently writing a Rust SANS-IO Noise based wire protocol using Snow.

What does SANS-IO mean?

It means implementing a network protocol without any io:

https://sans-io.readthedocs.io/
https://snarky.ca/designing-an-async-api-from-sans-i-o-on-up/

Therefore I later will be able to create an async io AND blocking io
protocol libraries that reuse the core crypto protocol code.

I am implementing this:
https://github.com/katzenpost/docs/blob/master/specs/wire-protocol.rst
However I'm using "Noise_XX_25519_ChaChaPoly_BLAKE2b" instead of
"Noise_XXhfs_25519+NewHopeSimple_ChaChaPoly_Blake2b". But I might
later decide to use the rust serde crate for wire command
serialization if I give up on being bitwise compatible with the golang
Katzenpost implementation. ( work-in-progress: https://github.com/david415/modem )

Speaking of bitwise compatibility... I noticed that the Noise protocol
specification does not specify if the prologue is to go before or after
the handshake message. I have noticed that the golang flynn noise library
puts the prologue before the handshake ciphertext and the rust snow library
puts the prologue after the handshake ciphertext.

Shouldn't the Noise protocol specify things to the degree that we can
easiy achieve bitwise compatiblity between language protocol implemenations?


Cheers,
David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://moderncrypto.org/mail-archive/noise/attachments/20180527/532e2903/attachment.sig>


More information about the Noise mailing list