diff --git a/CITATION.cff b/CITATION.cff deleted file mode 100644 index 28685b00..00000000 --- a/CITATION.cff +++ /dev/null @@ -1,19 +0,0 @@ -# This CITATION.cff file was generated with cffinit. -# Visit https://bit.ly/cffinit to generate yours today! - -cff-version: 1.2.0 -title: qFALL -type: software -authors: - - given-names: Laurens - family-names: Porzenheim - - given-names: Marvin - family-names: Beckmann - - given-names: Phil - family-names: Milewski - - given-names: Marcel Luca - family-names: Schmidt - - given-names: Jan Niklas - family-names: Siemer -repository-code: 'https://github.com/qfall' -license: MPL-2.0 diff --git a/Cargo.toml b/Cargo.toml index 1e78c1b7..95542a68 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "qfall-math" version = "0.1.0" edition = "2024" rust-version = "1.85" # due to rand and rand_distr dependency -description = "Prototyping Library for Lattice-Based Cryptography" +description = "Mathematical foundations for rapid prototyping of lattice-based cryptography" readme = "README.md" homepage = "https://qfall.github.io" repository = "https://github.com/qfall/math" @@ -14,19 +14,19 @@ autobenches = false [dependencies] criterion = { version = "0.8", features = ["html_reports"] } -flint-sys = "0.7.3" -libc = "0.2" -paste = "1.0" -rand = "0.9" -rand_distr = "0.5" +flint-sys = "0.7" +libc = "0" +paste = "1" +rand = "0" +rand_distr = "0" regex = "1" -serde = {version="1.0", features=["derive"]} -serde_json = "1.0" +serde = {version="1", features=["derive"]} +serde_json = "1" string-builder = "0.2" -thiserror = "2.0" -lazy_static = "1.4" -probability = "0.20.3" -derive_more = { version = "2.0.1", features = ["display"] } +thiserror = "2" +lazy_static = "1" +probability = "0.20" +derive_more = { version = "2.1", features = ["display"] } [profile.bench] debug = true diff --git a/README.md b/README.md index b6d71948..7f267c61 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [build](https://github.com/qfall/math/actions/workflows/push.yml) [license](https://github.com/qfall/math/blob/dev/LICENSE) -`qFALL` is a prototyping library for lattice-based constructions. +`qFALL` is a prototyping library for lattice-based cryptography. This `math`-crate is a memory-safe wrapper of [FLINT](https://flintlib.org/) in Rust, which provides several additional features often used in lattice-based cryptography. This crate is the foundation of the [qFALL project](https://qfall.github.io) containing further crates for prototyping of lattice-based cryptography. ## Quick-Start @@ -21,7 +21,7 @@ Then, add you can add this crate to your project by executing the following comm ```bash cargo add qfall-math ``` -- Find further information on [our website](https://qfall.github.io/). Also check out [`qfall-tools`](https://github.com/qfall/tools) and [`qfall-schemes`](https://github.com/qfall/schemes). +- Find further information on [our website](https://qfall.github.io/). Also check out [`qfall-tools`](https://crates.io/crates/qfall-tools) and [`qfall-schemes`](https://crates.io/crates/qfall-schemes). - Read the [documentation of this crate](https://docs.rs/qfall-math). - We recommend [our tutorial](https://qfall.github.io/book) to start working with qFALL. @@ -90,15 +90,21 @@ See [Contributing](https://github.com/qfall/math/blob/dev/CONTRIBUTING.md) for d Please use the following bibtex entry to cite [qFALL](https://qfall.github.io). -```text -TODO: Update to eprint +```bibtex +@misc{qfall, + author = {Marvin Beckmann and Phil Milewski and Laurens Porzenheim and Marcel Luca Schmidt and Jan Niklas Siemer}, + title = {{qFALL} – {Rapid Prototyping of Lattice-based Cryptography}}, + howpublished = {Cryptology {ePrint} Archive, Paper 2026/069}, + year = {2026}, + url = {https://eprint.iacr.org/2026/069} +} ``` ## Dependencies -This project uses the C-based, optimized math-library [FLINT](https://flintlib.org/). We tested our use of FLINT extensively to ensure that you can not introduce memory-leaks by using our library. -If you need a function supported by FLINT that is not supported by this crate, we have created an `unsafe` passthrough to access and operate on FLINT's structs directly. +This project uses the C-based, optimised math-library [FLINT](https://flintlib.org/). We tested our use of FLINT extensively to ensure that you can not introduce memory-leaks by using our crate. +If you need a function supported by FLINT that is not supported by this crate, this crate offers an `unsafe` passthrough to access and operate on FLINT's structs directly. -Furthermore, we utilized [serde](https://crates.io/crates/serde) and [serde_json](https://crates.io/crates/serde_json) to (de-)serialize objects to and from JSON. Last, but not least, our sampling algorithms use the [rand](https://crates.io/crates/rand)-crate to generate uniformly random bits. An extensive list can be found in our `Cargo.toml` file. +Furthermore, we utilise [serde](https://crates.io/crates/serde) and [serde_json](https://crates.io/crates/serde_json) to (de-)serialize objects to and from JSON. This crate relies on [criterion](https://crates.io/crates/criterion) for benchmarking purposes. Last, but not least, our sampling algorithms use the [rand](https://crates.io/crates/rand)-crate to generate uniformly random bits. An extensive list can be found in our `Cargo.toml` file. ## License diff --git a/src/lib.rs b/src/lib.rs index 167f837b..f6088502 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright © 2023 Marcel Luca Schmidt +// Copyright © 2023 Marcel Luca Schmidt, Niklas Siemer // // This file is part of qFALL-math. // @@ -15,11 +15,10 @@ //! - Rationals such as [Q](rational::Q), [`MatQ`](rational::MatQ), [`PolyOverQ`](rational::PolyOverQ). //! //! The `qFALL` project contains two more crates called [`qFALL-tools`](https://crates.io/crates/qfall-tools) -//! and [`qFALL-schemes`](https://github.com/qfall/schemes) to support prototyping. +//! and [`qFALL-schemes`](https://crates.io/crates/qfall-schemes) to support prototyping. //! - Find further information on [our website](https://qfall.github.io/). //! - We recommend [our tutorial](https://qfall.github.io/book) to start working with qFALL. //! -//! //! ## Quick Example //! ``` //! use qfall_math::{integer_mod_q::MatZq, integer::MatZ};