Expand description
§VaeaNTT — High-Performance Number Theoretic Transforms
NTT engine for lattice-based cryptography, optimized for ARM NEON (aarch64) with portable scalar fallback.
§Quick Start
use vaea_ntt::ntt32::Ntt32Context;
// Any NTT-friendly prime < 2^28
let ctx = Ntt32Context::new(256, 8_380_417);
let mut data = vec![42u32; 256];
ctx.forward(&mut data);
ctx.inverse(&mut data);
assert!(data.iter().all(|&x| x == 42));§Post-Quantum Presets
use vaea_ntt::pq::{PqScheme, PqNtt};
// ML-DSA-65 (FIPS 204) — digital signatures, NIST Level 3
let ntt = PqNtt::new(PqScheme::MlDsa65);§Modules
| Module | Use case |
|---|---|
pq | Post-quantum presets for ML-DSA (FIPS 204) |
ntt32 | 28-bit primes (< 2²⁸), ARM NEON vectorized |
ntt64 | 60–62 bit primes for FHE (SEAL/OpenFHE compatible) |
poly | Polynomials over Z_q[X]/(X^N+1) with 64-bit coefficients |
rns | Multi-prime CRT (Residue Number System) |
§Features
| Feature | Default | Description |
|---|---|---|
std | on | Enables std::error::Error impl on NttError |
rand | off | Random polynomial generation |
ffi | off | C/C++/JS bindings via Diplomat |
§no_std
This crate is no_std compatible (requires alloc).
Disable default features to use without std.
Modules§
- ntt32
- ntt32 — 28-bit NTT Pipeline
- ntt64
- 64-bit NTT Pipeline
- poly
- Polynomial over Z_q[X]/(X^N + 1)
- pq
- Post-Quantum Cryptography Presets
- rns
- Residue Number System (RNS) — Multi-Moduli Decomposition
Enums§
- NttError
- Errors returned by NTT context construction.