The examples
directory contains tutorials and standalone example programs
expressing the various APIs as well as a simple use-case using HElib.
The tutorials cover primarily the CKKS scheme and comprise 8 documented examples from basic operations to more complex serialization.
The example programs provided use the BGV scheme and comprise:
More examples are expected to be released at a later date.
To compile the examples, you must have HElib already installed on your system
(see INSTALL.md in this distribution's root directory). The
process is pure CMake. First, create a build directory and move into it. From
examples/build
run CMake,
cmake [-Dhelib_DIR=<directory-to-installed-HElib>/share/cmake/helib] <directory-to-examples> ..
then run make from the same directory with optional number of threads using the
-j
flag for example,
make [-j<number-of-threads>]
The executables for each of the example programs can be found in the bin
directory.
All tests for the examples are written in bats (a test framework for bash) and require bats-core.
All examples have a help method by passing the -h
flag, for example
./BGV_packed_arithmetic -h
The BGV_packed_arithmetic example shows some of the basic arithmetic APIs available for ciphertext and plaintext objects.
The BGV_binary_arithmetic example shows the API for performing binary arithmetic on a vector of ciphertexts where i-th ciphertext contains the i-th bit of the binary number.
The BGV_country_db_lookup example shows a use-case for performing a database lookup on countries and their capitals, more information on this can be found here.
All tests for the examples are written in bats (a test framework for bash) and require bats-core.
Note that the tests require that the examples have been successfully compiled in
the build
directory and available in build/bin
. To run the tests, one can
simply execute the scripts from within the examples/tests
directory.
To run all tests type the command below. Optionally, the -j
flag can use
threads to parallelize the tests. Note, this requires GNU parallel, see the
bats documentation for more
information.
bats . [-j <number-of-threads>]
To run a specific test file.
bats <testfile> [-j <number-of-threads>]
or
./<testfile> [-j <number-of-threads>]
To run a specific test by name add the -f
flag e.g.
bats . -f <testname> [-j <number-of-threads>]
The <testname>
can be a substring of the test name and will match all valid
matches.
For debugging, it is sometimes useful to view the artifacts generated by the
tests. For this, set the environment variable DEBUG
to true
or 1
such as,
DEBUG=1 bats . [-j <number-of-threads>]