# Obliv-C installation and FLORAM Benchmarking This document describes how to quickly install Obliv-C and run FLORAM benchmarks. ## Obliv-C Installation First, clone the ```Obliv-C``` repository as ```bash git clone -b obliv-c https://github.com/samee/obliv-c ``` making sure to use the branch corresponding to the stable release. The folder will attempt to use OCaml to set it up. Install `opam`, the OCaml package manager, as ```bash sudo apt-get install ocaml libgcrypt20-dev ocaml-findlib opam m4 ``` which installs all the dependencies. The latest OCaml version with which Obliv-C has been tested is 4.06.0, and you can switch to that with ```bash opam switch 4.06.0 eval `opam config env` ``` After that, download some additional dependencies with ```bash opam install camlp4 ocamlfind ocamlbuild batteries ``` After this, just navigate to the Obliv-C repository and install with ```bash ./configure && make ``` ## Floram Benchmarking Clone the Floram repository as ```bash git clone https://gitlab.com/neucrypt/floram/ ``` At this point, `make` will probably not work. You could potentially get two errors: 1. `<obliv.h>` header not found. If this is the case, then $PATH hasn't been set correctly. To do this, run ```bash export OBLIVC_PATH="<your/obliv-c/repository>" ``` 2. Some kind of parse error. This occurs due to a bug in the code when dealing with floats. The solution is to compile with the `-D _Float128=double` flag. To do this, add the flag ```makefile CFLAGS+= -O3 -march=native -I/usr/include -I . -I $(SRC_PATH) -std=c99 -fopenmp -D _Float128=double ``` to the Makefile. The first few lines of the Makefile should now look like this ```makefile= CC ?= gcc CPP ?= cpp AR ?= ar OBLIVCC = $(OBLIVC_PATH)/bin/oblivcc OBLIVCH = $(OBLIVC_PATH)/src/ext/oblivc OBLIVCA = $(OBLIVC_PATH)/_build/libobliv.a CFLAGS+= -O3 -march=native -I/usr/include -I . -I $(SRC_PATH) -std=c99 -fopenmp -D _Float128=double LDFLAGS += -lm -lgomp -lgcrypt ``` ### Running Benchmarks Once make is complete, the `build` repository should contain tests. The tests are designed to be run using a server and a client. To run as a server, just run ```bash /your/obliv-c/repository/build/tests/test_name ``` To run as a client, add ```bash /your/obliv-c/repository/build/tests/test_name -c <address> ``` If it's the same computer, then the address is just ```bash /your/obliv-c/repository/build/tests/test_name -c localhost ``` The final command is ``` /your/obliv-c/repository/build/tests/test_name & /your/obliv-c/repository/build/tests/test_name -c localhost ``` The benchmarks should then be running.