[ANN] Release of bindings to blake2, uecc, and hacl

On behalf of Nomadic Labs, I’m pleased to announce the release of multiple libraries used in the cryptography section of the Tezos project. All three libraries are available through opam.

blake2 provides the fast and secure hash function blake2b (optimised for 64 bits architecture). You can find more details on the original library on https://blake2.net/ and the bindings on https://gitlab.com/nomadic-labs/ocaml-blake2

uecc (read “micro-ecc”) implements eliptic curve primitives (specifically ECDH and ECDSA). You can find the original library on https://github.com/kmackay/micro-ecc and the bindings on https://gitlab.com/nomadic-labs/ocaml-uecc

hacl implements multiple cryptographic algorithms. The original library, HACL*, developed in F*, can be found on https://github.com/project-everest/hacl-star, and the bindings on https://gitlab.com/nomadic-labs/ocaml-hacl

These releases are part of a broader effort to release in-house bindings and libraries and upstream changes to vendored libraries. Look out for our past and future announces.


The whole OCaml community is on github…
What’ s the thing with gitlab?

I’m not exactly sure why the project was moved over to Gitlab. I suspect Gitlab being open-source might have contributed.

I’m quite happy with Gitlab’s UI, features, and general feel. I can’t vouch for others, but no one seems majorly annoyed.

Thankfully you can login GitLab using your GitHub account, so no need for anything else.

1 Like

I don’t mean to derail the thread, but thought it might be useful to note that for MirageOS users, BLAKE2b and BLAKE2s are available in https://github.com/mirage/digestif

@raphael-proust: do you know if the ocaml-uecc and ocaml-hacl are Mirage-compatible?

1 Like

I don’t know if they are compatible. I wouldn’t think they are.

The bindings for this library were made relatively early on in the life of the tezos project and I don’t know the rationale behind making them instead of using digestif. It might have to do with some custom bigstring-like data strcuture the tezos project used to use.

I wouldn’t be surprised if we switched to digestif at some point in the future.