Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

SmallSource/NFLlib

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NFLlib

An NTT-based Fast Lattice library

Goal

NFLlib is an efficient and open-source C++ library dedicated to ideal lattice cryptography. It is specialized in polynomial rings quotiented by a cyclotomic polynomial whose degree is a power of two. The library combines algorithmic optimizations (Chinese Remainder Theorem, optimized Number Theoretic Transform) together with programming optimization techniques (SSE and AVX2 specializations, C++ expression templates, etc.).

License

GPLv3

Install Steps

You need cmake, GMP and Mpfr, as well as a C++11 compiler to build NFLLib.

To build, test and install a production version of nfllib, run the following:

$> mkdir _build
$> cd _build
$> cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/nfllib
$> make
$> make test
$> make install

The following CMake options are relevant:

Option Description
-DCMAKE_INSTALL_PREFIX=<value> Where the library is installed
-DCMAKE_BUILD_TYPE=Release|Debug The basic compiler configuration
-DNFL_OPTIMIZED=ON Enable SSE/AVX-based optimization

SSE/AVX optimizations

To use SSE-based optimizations, compile the code with the flags -DNFL_OPTIMIZED=ON -DNTT_SSE.

To use AVX-based optimizations, compile the code with the flags -DNFL_OPTIMIZED=ON -DNTT_AVX2.

Getting started

In order to get the documentation you need Sphinx and the Alabaster theme. Installation procedures are described at (we recommend using pip for both installations) :

After getting both Sphinx and the Alabaster theme build the documentation and show it with:

$> sphinx-build . build
$> your_favorite_browser build/nfl.html

If you have issues building the documentation please contact the developper team.

Contributors

This library is an extension/evolution of the NTTTools module from XPIR done by members of CryptoExperts, INP ENSEEIHT, Quarkslab (in alphabetical order).

About

NTT-based Fast Lattice library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 67.7%
  • Assembly 30.3%
  • CMake 2.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.