An unofficial implementation of iPrivJoin
Install vcpkg
Install kuku by vcpkg
git clone git@github.com:microsoft/vcpkg.git --depth 1
./vcpkg/bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install kukuClone:
git clone git@github.com:nhysteric/iPrivJoin.git --recursiveChange extern/volePSI/volePSI/SimpleIndex.cpp:276
#if !defined(NDEBUG) && defined(ENABLE_BOOST)
auto B2 = get_bin_size(numBins, numBalls, statSecParam, false);
assert(B2 <= B);
#endif
return B;
}
}to
#if !defined(NDEBUG) && defined(ENABLE_BOOST)
auto B2 = get_bin_size(numBins, numBalls, statSecParam, false);
// assert(B2 <= B);
if (B2 > B)
return B2;
else
return B;
#endif
}
}Than compile:
cd iPrivJoin/extern/volePSI
python3 build.py -DVOLE_PSI_ENABLE_BOOST=ON
cd ../..
cmake --no-warn-unused-cli -DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ -DCMAKE_CXX_STANDARD=20 -B build .
cmake --build buildChange DCMAKE_TOOLCHAIN_FILE to your path of vcpkg,and make sure your compiler supports C++20.
./build/iPrivJoin {config_name} {env_type}A config is a TOML file, with fields and format as follows:
bins = 16384
funcs = 2
address = "localhost:8011"
pa_elems = 15500
pa_features = 15
pb_elems = 15500
pb_features = 14Example:
./build/iPrivJoin example lanYou will find the output files under test/lan.