Expand description
qFALL is a prototyping library for lattice-based cryptography.
qFALL-tools collects common sub-modules and features used by lattice-based constructions
to simplify and accelerate the development of such.
Among these are:
- Compression techniques,
- Primitives such as Preimage Samplable Functions (PSF),
- Sampling algorithm using trapdoors, and
- common functions for efficient prototyping such as
The qFALL project contains two more crates called qFALL-math
and qFALL-schemes to support prototyping.
- Find further information on our website.
- We recommend our tutorial to start working with qFALL.
§Quick Example
use qfall_tools::utils::{common_moduli::new_anticyclic, common_encodings::encode_value_in_polynomialringzq};
use qfall_math::integer::Z;
// Create X^256 + 1 mod 3329
let poly_mod = new_anticyclic(256, 3329).unwrap();
// Generate integer from string
let message = Z::from_utf8("Hello!");
// Turn string into encoding q/2 and 0 for each 1 and 0 bit respectively
let mu_q_half = encode_value_in_polynomialringzq(message, 2, &poly_mod).unwrap();Modules§
- compression
- Contains commonly used compression techniques in lattice-based cryptography.
- primitive
- Contains primitives that are useful for cryptographic constructions, but are solely targeted to be used in other constructions.
- sample
- Contains anything that should be easily samplable for lattice-based cryptography, which is more complex than sampling from a distribution.
- utils
- This module contains commonly functions in lattice-based cryptography.