Getting Started

PETAce-SetOps

Requirements

SystemToolchain
LinuxClang++ (>= 5.0) or GNU G++ (>= 5.5), CMake (>= 3.15)
Required dependencyTested versionUse
PETAce-Solo0.4.0Cryptography primitives
PETAce-Verse0.4.0Primitive cryptographic protocols
PETAce-Duet0.4.0Two-party secure computing protocols
PETAce-Network0.4.0Network communication protocols
Google Logging0.4.0Logging
JSON for Modern C++(JSON)3.10.1PSI parameter configuration
Optional dependencyTested versionUse
GoogleTest1.12.1For running tests
gflags2.2.2For running benchmarks

Building PETAce-SetOps

We assume that all commands presented below are executed in the root directory of PETAce-SetOps.

First, build JSON for Modern C++ (JSON) using the following scripts. Assume that JSON is cloned into the directory ${JSON}.

cmake -B ${JSON}/build -S ${JSON}
cmake --build ${JSON}/build -j

Then, build PETAce-SetOps library (optionally with test and example):

cmake -S . -B build -Dnlohmann_json_DIR=${JSON}/build -DSETOPS_BUILD_TEST=ON -DSETOPS_BUILD_EXAMPLE=ON
cmake --build build

Output binaries can be found in build/lib/ and build/bin/ directories.

Compile OptionsValuesDefaultDescription
CMAKE_BUILD_TYPERelease/DebugReleaseDebug mode decreases run-time performance.
SETOPS_BUILD_SHARED_LIBSON/OFFOFFBuild a shared library if set to ON.
SETOPS_BUILD_EXAMPLEON/OFFONBuild C++ example if set to ON.
SETOPS_BUILD_TESTON/OFFONBuild C++ test if set to ON.
SETOPS_BUILD_DEPSON/OFFONDownload and build unmet dependencies if set to ON.

Here we give a simple example to run protocols in PETAce-SetOps.

To run as Party A (a sender):

bash build/example/scripts/ecdh_psi_sender_example.sh

To run as Party B (a receiver):

bash build/example/scripts/ecdh_psi_receiver_example.sh