Skip to content
Private Set Union from Symmetric-Key Techniques
C++ C CMake PowerShell
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
Tests removing OT in process... Feb 9, 2019
TestsVS removing OT in process... Feb 9, 2019
frontend up Feb 11, 2019
libOTe refactoring Mar 6, 2018
libPSI cleaning Apr 19, 2018
libPSU up Feb 11, 2019
CMakeLists.txt benchmark May 1, 2018
ExternalDependancies.props Update Jul 3, 2019
buildAll.ps1 1st\ Nov 10, 2017
script_PSU.get simple hahsing parameters May 7, 2018
script_PSU_n22.get benchmark May 1, 2018

Private Set Union

This is the implementation of our paper: **Scalable Private Set Union from Symmetric-Key Techniques **[ePrint].

Evaluating on a single server (2 36-cores Intel Xeon CPU E5-2699 v3 @ 2.30GHz and 256GB of RAM) with a single thread per party, each party has 2^20 items, our protocol requires 239 seconds and 144 MB.


Required libraries

C++ compiler with C++14 support. There are several library dependencies including Boost, Miracl, NTL with GMP, and libOTe. For libOTe, it requires CPU supporting PCLMUL, AES-NI, and SSE4.1. Optional: nasm for improved SHA1 performance. Our code has been tested on both Windows (Microsoft Visual Studio) and Linux. To install the required libraries:

  • For building boost, miracl and libOTe, please follow the more instructions at libOTe
  • For NTL with GMP, cd ./thirdparty, and run gmp.get and ntl.get.

Building the Project

After cloning project from git,

  1. build cryptoTools,libOTe, and libPSU projects in order.
  2. run frontend project
  1. make (requirements: CMake, Make, g++ or similar)
  2. for test: ./bin/frontend.exe -t

Running the code

./bin/frontend.exe -r 1 
& ./bin/frontend.exe -r 0 


For any questions on building or running the library, please contact Ni Trieu at trieun at oregonstate dot edu

You can’t perform that action at this time.