This repository provides an OCaml library containing bindings for the wiztoolkit toolset. Wiztoolkit is a collection of tools for working with the SIEVE IR circuit format with an extensive C++ API for manipulating the SIEVE IR.
The main module of the OCaml library is called Wiztoolkit.Bindings
, and provides the following functions
load_file
- useswiztoolkit
to parse the relation, instance and witness files, creating the corresponding OCaml datatypesget_gates
- returns an array with the circuit gatesget_private_inputs
- returns an array with the private inputs valuesget_public_inputs
- returns an array with the public input valuesget_primes
- returns an array with the primes used to define the circuitget_plugins
- returns the plugins used in the circuit description
Our wiztoolkit
OCaml library uses the following third-party tools/libraries:
- OCaml (>= 4.14.0) - available at https://ocaml.org/
- Dune (>= 3.14) - available at https://github.com/ocaml/dune
wiztoolkit
- available at https://github.com/stealthsoftwareinc/wiztoolkit
To install wiztoolkit
, please follow the instructions provided at https://github.com/stealthsoftwareinc/wiztoolkit/blob/main/docs/7_install.adoc. The other dependencies can be installed using opam
by typing
$> opam install dune
If installing from source, running
$> make
$> make install
builds and install the wiztoolkit
OCaml library (under root module named Wiztoolkit.Bindings
) assuming that all dependencies have been successfully installed.
The bindings can also be installed via opam
, by running
$> opam pin git+https://github.com/SRI-CSL/wiztoolkit-ocaml-bindings.git#main
Examples of how to use EVOCrypt can be found in the test
directory.
This material is based upon work supported by DARPA under Contract No. HR001120C0086. Any opinions, findings and conclusions or recommendations expressed in this material are those the author(s) and do not necessarily reflect the views of the United States Government or DARPA.
Distribution Statement ‘A’ (Approved for Public Release, Distribution Unlimited)