Private information retrieval (PIR) enables retrieving an element from a server-held database without revealing the desired index.
This library requires the following external dependencies:
-
Abseil for C++ common libraries.
-
Bazel for building the library.
-
BoringSSL for underlying cryptographic operations.
-
GFlag for flags. Needed to use glog.
-
GLog for logging.
-
Google Test for unit testing the library.
-
Protocol Buffers for data serialization.
-
Shell for fully homomorphic encryption.
-
Tink for cryptographic PRNGs.
In order to run the SHELL library, you need to install Bazel, if you don't have it already. Follow the instructions for your platform on the Bazel website.
You also need to install Git, if you don't have it already. Follow the instructions for your platform on the Git website.
Once you've installed Bazel and Git, open a Terminal and clone the SHELL repository into a local folder:
git clone https://github.com/google/private-retrieval.git
Navigate into the private-retrieval
folder you just created, and build the
SHELL library and dependencies using Bazel. Note, the library must be built
using C++17.
cd private-retrieval
bazel build :all --cxxopt='-std=c++17'
You may also run all tests (recursively) using the following command:
bazel test ... --cxxopt='-std=c++17'
This is not an officially supported Google product. The software is provided as-is without any guarantees or warranties, express or implied.