qp_rusty_crystals_dilithium/
lib.rs1#![cfg_attr(not(feature = "std"), no_std)]
2#![allow(clippy::identity_op)]
3#![allow(clippy::needless_range_loop)]
4#![allow(clippy::precedence)]
5#![allow(clippy::unnecessary_cast)]
6#![allow(clippy::enum_variant_names)]
7
8extern crate alloc;
9
10mod errors;
11pub mod fips202;
12pub mod ml_dsa_44;
13pub mod ml_dsa_65;
14pub mod ml_dsa_87;
15pub mod ntt;
16pub mod packing;
17pub mod params;
18pub mod poly;
19pub mod polyvec;
20pub mod reduce;
21pub mod rounding;
22pub mod sign;
23
24pub enum PH {
25 SHA256,
26 SHA512,
27}
28
29#[cfg(feature = "std")]
30use rand::RngCore;
31#[cfg(feature = "std")]
38fn random_bytes(bytes: &mut [u8], n: usize) {
39 rand::prelude::thread_rng().try_fill_bytes(&mut bytes[..n]).unwrap();
40}
41
42#[cfg(test)]
43mod tests {
44 #[test]
45 fn params() {
46 assert_eq!(crate::params::Q, 8380417);
47 assert_eq!(crate::params::N, 256);
48 assert_eq!(crate::params::R, 1753);
49 assert_eq!(crate::params::D, 13);
50 }
51 #[test]
52 fn params_lvl2() {
53 assert_eq!(crate::params::lvl2::TAU, 39);
54 assert_eq!(crate::params::lvl2::CHALLENGE_ENTROPY, 192);
55 assert_eq!(crate::params::lvl2::GAMMA1, 131072);
56 assert_eq!(crate::params::lvl2::GAMMA2, 95232);
57 assert_eq!(crate::params::lvl2::K, 4);
58 assert_eq!(crate::params::lvl2::L, 4);
59 assert_eq!(crate::params::lvl2::ETA, 2);
60 assert_eq!(crate::params::lvl2::BETA, 78);
61 assert_eq!(crate::params::lvl2::OMEGA, 80);
62 }
63 #[test]
64 fn params_lvl3() {
65 assert_eq!(crate::params::lvl3::TAU, 49);
66 assert_eq!(crate::params::lvl3::CHALLENGE_ENTROPY, 225);
67 assert_eq!(crate::params::lvl3::GAMMA1, 524288);
68 assert_eq!(crate::params::lvl3::GAMMA2, 261888);
69 assert_eq!(crate::params::lvl3::K, 6);
70 assert_eq!(crate::params::lvl3::L, 5);
71 assert_eq!(crate::params::lvl3::ETA, 4);
72 assert_eq!(crate::params::lvl3::BETA, 196);
73 assert_eq!(crate::params::lvl3::OMEGA, 55);
74 }
75 #[test]
76 fn params_lvl5() {
77 assert_eq!(crate::params::lvl5::TAU, 60);
78 assert_eq!(crate::params::lvl5::CHALLENGE_ENTROPY, 257);
79 assert_eq!(crate::params::lvl5::GAMMA1, 524288);
80 assert_eq!(crate::params::lvl5::GAMMA2, 261888);
81 assert_eq!(crate::params::lvl5::K, 8);
82 assert_eq!(crate::params::lvl5::L, 7);
83 assert_eq!(crate::params::lvl5::ETA, 2);
84 assert_eq!(crate::params::lvl5::BETA, 120);
85 assert_eq!(crate::params::lvl5::OMEGA, 75);
86 }
87}