package noise
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=3970103d44c960cd97a44f571079d0b04c170874a89f8fb1c9cd94ff912952db
sha512=fb5ffc7e3156532444556caf702d14180c94b08f12bd1b7db9febee4a16100868b73b31ff668f09bcfae5de04e973ecc1c4e83cf7630eaa4fd19afecebe5333b
Description
noise implements the Noise Protocol Framework (https://noiseprotocol.org/) in OCaml. It supports Curve25519 DH, AES-256-GCM and ChaCha20-Poly1305 ciphers, SHA-256, SHA-512, BLAKE2s and BLAKE2b hashes, all fundamental and deferred handshake patterns, and PSK modifiers.
README
ocaml-noise
OCaml implementation of the Noise Protocol Framework.
Not ready for primetime.
More precisely, some primitives are implemented in an ad hoc manner. This passes a good amount of test vectors, but this has not been properly fuzzed and there are no countermeasures with respect to side channel attacks.
What is this NOT?
This is not an implementation of a full cryptographic protocol that you can drop into your application and have secure channels.
What is this?
This is an implementation of the Noise Protocol Framework. It consists of building bricks that can be used to create a secure cryptographic protocol.
Because of the way Noise works, it is possible to process messages in full without dealing with I/O or buffering. So, this library only deals with the handshake and encrypting/decrypting payloads.
How to use this?
Refer to the examples in test/examples/ for an example, but basically:
- pick a protocol
- import or generate the relevant keys on each side
- create initial states using
Noise.State.makeandNoise.Protocol.initialize - drive the handshake using
Noise.Protocol.read_messageandNoise.Protocol.write_message - check that the handshake is completed (see
Noise.State.handshake_hash) - send transport messages using
Noise.Protocol.read_messageandNoise.Protocol.write_message
Resources
Dependencies (5)
-
digestif
>= "1.3" -
mirage-crypto-ec
>= "2.0" -
mirage-crypto
>= "2.0" -
ocaml
>= "5.0" -
dune
>= "3.17"
Dev Dependencies (5)
-
odoc
with-doc -
ohex
with-test & >= "0.2" -
yojson
with-test & >= "2.0" -
alcotest
with-test & >= "1.0" -
mirage-crypto-rng
with-test & >= "2.0"
Used by
None
Conflicts
None