pub trait RingParams {
const N: usize;
const Q: i32;
const ROWS_IN_A: usize;
const COLUMNS_IN_A: usize;
const TAU: usize;
const GAMMA1_EXPONENT: usize;
const GAMMA2: i32;
const ETA: i32;
const BETA: i32;
}
pub enum MlDsa44Params {}
impl RingParams for MlDsa44Params {
const N: usize = 256;
const Q: i32 = crate::constants::FIELD_MODULUS;
const ROWS_IN_A: usize = 4;
const COLUMNS_IN_A: usize = 4;
const TAU: usize = 39;
const GAMMA1_EXPONENT: usize = 17;
const GAMMA2: i32 = (Self::Q - 1) / 88;
const ETA: i32 = 2;
const BETA: i32 = (Self::TAU as i32) * Self::ETA;
}
pub enum MlDsa65Params {}
impl RingParams for MlDsa65Params {
const N: usize = 256;
const Q: i32 = crate::constants::FIELD_MODULUS;
const ROWS_IN_A: usize = 6;
const COLUMNS_IN_A: usize = 5;
const TAU: usize = 49;
const GAMMA1_EXPONENT: usize = 19;
const GAMMA2: i32 = (Self::Q - 1) / 32;
const ETA: i32 = 4;
const BETA: i32 = (Self::TAU as i32) * Self::ETA;
}
pub enum MlDsa87Params {}
impl RingParams for MlDsa87Params {
const N: usize = 256;
const Q: i32 = crate::constants::FIELD_MODULUS;
const ROWS_IN_A: usize = 8;
const COLUMNS_IN_A: usize = 7;
const TAU: usize = 60;
const GAMMA1_EXPONENT: usize = 19;
const GAMMA2: i32 = (Self::Q - 1) / 32;
const ETA: i32 = 2;
const BETA: i32 = (Self::TAU as i32) * Self::ETA;
}