Implementation of the SubSieve algorithm, following the article Shortest Vector from Lattice Sieving: a Few Dimensions for Free
It is written in C++ and python, relying on the python fpylll library. It also requires the ctypes and numpy python packages. The C++ component is used through middleware.py, that wrap the shared object binary SubSieveLib.so, using python ctypes.
To use this SubSieve.py, you must first:
- compile the C++ component using Make
- be in your fpylll environment (See item 7. of this howto)
The current makefile is very specific, and should be adjusted to your hardware and platforms. In particular, for OSX, you may refer to this issue.
To reproduce the benchmarks of the paper, simply run bench.py. Of course, results may differs depending on your hardware, or on the version of fpylll used.