README.md 1.93 KB
Newer Older
Gerard Ryan's avatar
Gerard Ryan committed
1 2 3 4 5 6 7 8 9
PALISADE Lattice Cryptography Library
=====================================

[License Information](License.md)

[Contact Information](Contact.md)

[Library Contributors](Contributors.md)

Gerard Ryan's avatar
Gerard Ryan committed
10
[Library Wiki with documentation](https://git.njit.edu/palisade/palisade-student-edition/wikis/home)
Gerard Ryan's avatar
Gerard Ryan committed
11 12 13 14 15 16 17 18 19 20 21 22 23

This is a software library for general lattice crypto.  We implement this library in the following multiple layers:

* Math operations layer to support low-level modulus arithmetic.  This layer is implemented to be portable to multiple hardware computation substrates.
* Lattice operations layer to support lattice operations and ring algebra.  This layer makes calls to the math operations layer.
* Crypto layer to contain multiple implementations of lattice encryption schemes, including PRE schemes, leveled homomorphic encryption schemes, lattice trapdoors and lattice signature schemes.

The library includes unit tests and several sample application demos.

The library is implemented in C++11.

We build and run the library on Windows, Linux and Mac OSX environments.

Gerard Ryan's avatar
Gerard Ryan committed
24
We require a version of C++ compiler that supports the C++11 extensions. Recent vintages of GCC or Clang should work fine. We have removed support for Visual Studio and suggest that it not be used. We also use bison and flex in some parts of the library.
Gerard Ryan's avatar
Gerard Ryan committed
25

Gerard Ryan's avatar
Gerard Ryan committed
26 27 28 29 30 31 32
To check if your environment will allow you to build and use PALISADE, run the configure.sh script in the root directory of the library software distribution.

You build the entirety of PALISADE by running make. There are various command line arguments that can be passed to make to vary the details of what is made and where:

* BINDIR=directory builds the library with a different target directory
* BACKEND=n builds the library with MATHBACKEND set to n (you may want to touch the src/core/lib/math/backend.h file to force the build)
* COVERAGE=any builds the library with coverage testing enabled
Gerard Ryan's avatar
Gerard Ryan committed
33
* MEM=any builds the library without optimizations