ERIS for OCaml
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Go to file
pukkamustard ccb6ad6428
guix: Use zig-0.9.
3 weeks ago
.reuse initial commit 10 months ago
LICENSES Relicense as AGPL-3.0-or-later 8 months ago
doc */dune: format 7 months ago
lib v1.0.0 7 months ago
test test/eris/web: Add (manual) test for browsers 7 months ago
.gitignore initial commit 10 months ago
.ocamlformat Eris.Encoder: Fix one-off error when collecting internal nodes 10 months ago
README.md README: notes on crypto implementations 8 months ago
dune-project dune-project: Add test dependencies 7 months ago
eris-lwt.opam v1.0.0 7 months ago
eris.opam dune-project: Add test dependencies 7 months ago
eris_cbor.opam v1.0.0 7 months ago
guix.scm guix: Use zig-0.9. 3 weeks ago

README.md

ocaml-eris

OCaml implementation of the Encoding for Robust Immutable Storage (ERIS).

This library can be used to encoded and decode content with ERIS. Features include:

  • Streaming encoding
  • Random-access decoder
  • Cross-platform support

Cryptographic Primitives

We provide multiple implementations of the necessary cryptographic primitives (Blake2b and ChaCha20). End-users can choose which implementation to use by specifying the package in their dependencies. Currently following implementations are provided:

  • eris.crypto-monocypher: Uses the Monocypher cryptographic library via the ocaml-monocypher bindings. This implementation works well on the Unix platform and is selected by default.
  • eris.crypto-zig: Uses the cryptographic primitives provided in the Zig standard library. This implementation works on the Unix platform and requires the Zig compiler installed.
  • eris.crypto-wasm: Uses the cryptographic primitives provided by the Zig standard library compiled to WASM. This implementation can be used with js_of_ocaml and requires the Zig compiler installed. The WASM code is bundled using Crunch so users do not need to worry about provisioning or loading WASM.

A pure OCaml implementation of Blake2b and ChaCha20 would be very nice.

See also the Digestif project that uses the same linking trick.

License

AGPL-3.0-or-later