monocypher

OCaml bindings to the Monocypher cryptographic library
README

This library provides OCaml bindings to the Monocypher cryptographic library. Bindings are created using the Ctypes library.

Currently only a small sub-set of Monocypher functions are available in the OCaml library (Blake2b, IETF ChaCha20 and Ed25519). Contributions to add bindings to the other Monocypher functions are very welcome! Please contact the maintainer by mail.

Why Monocypher?

Monocypher provides "Boring crypto that simply works". In particular it provides primitives required for DROMEDAR:

  • Blake2b cryptographic hash

  • ChaCha20 stream cypher

  • Ed25519 for public key signatures

Monocypher is portable, easy to build and include in projects (see also Why Monocypher?).

Related Software

hacl-star?

HACL* is a formally verified cryptographic library that provides automatically generated OCaml bindings. All necessary primitives (Blake2b, ChaCha20, Ed25519) are provided by HACL*.

However, it does not seem trivial to build HACL* directly from source (F*). One needs to rely on pre-generated C and OCaml artifacts. This library can be built completely from source code.

Furthermore, HACL* is considerably larger than Monocypher.

mirage-crypto?

mirage-crypto is a mostly OCaml implementation (with some C) of cryptographic primitives. It is maintained by the MirageOS community.

Unfortunately, mirage-crypto does not provide all necessary primitives I needed (Blake2b and Ed25519 are missing).

If in the future the necessary crypto primitive are added to mirage-crypto it would make sense to deprecate ocaml-monocypher.

vbmithr/ocaml-monocypher?

vbmithr/ocaml-monocypher does not use the Ctypes library for creating the binding. This requires some C hacking.

As the OCaml C stubs are directly in the monocypher.c file it is hard to update to a newer version of Monocypher. This library uses the Ctypes library to automatically generate bindings to C.

Acknowledgments

This library was initialy developed for DREAM project and has been supported trough NGI Pointer.

License

CC0-1.0 or BSD-2-Clause (same as Monocypher).

Install
Published
15 Jun 2022
Sources
ocaml-monocypher-v0.1.0.tar.gz
md5=7d1350d7df38e2420f1fbd1567e553d8
sha512=1bc19517a4fe6d7b46f03589e10d1911ca1740a73490325bc3c4048fbb86ad2f2ef9d90047611422aee2b34cdd9eba1d26c29bee56c366868490e83fce8aaffb
Dependencies
odoc
with-doc
alcotest
with-test
ctypes
>= "0.13.0"
ocaml
>= "4.08.0"
dune
>= "3.2"
Reverse Dependencies