OpenSSE’s schemes implementation need a compiler supporting C++14. It has been successfully built and tested on Ubuntu 14 LTS using both clang 3.6 and gcc 4.9.3 and on Mac OS X.10 using clang 7.0.0.
First, you will need essential dependencies in order to properly get and build the source.
On Ubuntu, you will to install the following packages:
$ [sudo] apt install build-essential autoconf libtool yasm libssl-dev scons
If you are using a different distribution, you might need to adapt this line to your favorite package manager.
One small part of the code uses Boost’s Endian library. Unfortunately, this library has only been present in Boost starting from release 1.58, and thus unavailable as a regular package. Hence, you will need to install Boost manually. Hopefully, Endian is a header-only library, so you can just download the headers and put them in your compiler’s header search path.
Mac OS X
First, make sure you can the developpers’ command line tools installed:
$ [sudo] xcode-select --install
Then, if you still haven’t, you should get Homebrew. You will actually need it to install dependencies. Run the following line to get all of them (this might take some time).
$ brew install automake cmake autoconf yasm openssl scons grpc rocksdb boost
The last dependency you will need is not packaged and you will have to install it manually. Some features (puncturable encryption) are based on cryptographic pairings. These are implemented using the RELIC toolkit. RELIC has many compilation options. To install RELIC, you can do the following:
$ git clone https://github.com/relic-toolkit/relic.git $ cd relic $ mkdir build; cd build $ cmake -G "Unix Makefiles" -DMULTI=PTHREAD -DCOMP="-O3 -funroll-loops -fomit-frame-pointer -finline-small-functions -march=native -mtune=native" -DARCH="X64" -DRAND="UDEV" -DWITH="BN;DV;FP;FPX;EP;EPX;PP;PC;MD" -DCHECK=off -DVERBS=off -DDEBUG=off -DBENCH=0 -DTESTS=1 -DARITH=gmp -DFP_PRIME=254 -DFP_QNRES=off -DFP_METHD="INTEG;INTEG;INTEG;MONTY;LOWER;SLIDE" -DFPX_METHD="INTEG;INTEG;LAZYR" -DPP_METHD="LAZYR;OATEP" -DBN_PRECI=256 -DFP_QNRES=on ../. $ make $ make install
You can also replace the
-DARITH=gmp option by
-DARITH=x64-asm-254 (for better performance) or
-DARITH=easy (to get rid of the gmp dependency). Note that the first two depend on gmp which can itself be installed as a package with
$ [sudo] apt install libgmp-dev
on Ubuntu and
$ brew install gmp