use crate::params::SecurityLevel;
pub mod level1;
pub mod level3;
pub mod level5;
pub trait LevelPrecomp: SecurityLevel {
fn basis_e0_px_bytes() -> &'static [u8];
fn basis_e0_qx_bytes() -> &'static [u8];
fn p_cofactor_for_2f() -> &'static [u64];
fn p_cofactor_for_2f_bitlength() -> u32;
fn torsion_even_power() -> u32;
fn splitting_transforms() -> &'static [[[u8; 4]; 4]; 10];
fn normalization_transforms() -> &'static [[[u8; 4]; 4]; 6];
fn chi_eval() -> &'static [[i32; 4]; 4];
fn even_index() -> &'static [[i32; 2]; 10];
}
impl LevelPrecomp for crate::params::Level1 {
fn basis_e0_px_bytes() -> &'static [u8] {
&level1::BASIS_E0_PX_BYTES
}
fn basis_e0_qx_bytes() -> &'static [u8] {
&level1::BASIS_E0_QX_BYTES
}
fn p_cofactor_for_2f() -> &'static [u64] {
level1::P_COFACTOR_FOR_2F
}
fn p_cofactor_for_2f_bitlength() -> u32 {
level1::P_COFACTOR_FOR_2F_BITLENGTH
}
fn torsion_even_power() -> u32 {
level1::TORSION_EVEN_POWER
}
fn splitting_transforms() -> &'static [[[u8; 4]; 4]; 10] {
&level1::SPLITTING_TRANSFORMS
}
fn normalization_transforms() -> &'static [[[u8; 4]; 4]; 6] {
&level1::NORMALIZATION_TRANSFORMS
}
fn chi_eval() -> &'static [[i32; 4]; 4] {
&level1::CHI_EVAL
}
fn even_index() -> &'static [[i32; 2]; 10] {
&level1::EVEN_INDEX
}
}
impl LevelPrecomp for crate::params::Level3 {
fn basis_e0_px_bytes() -> &'static [u8] {
&level3::BASIS_E0_PX_BYTES
}
fn basis_e0_qx_bytes() -> &'static [u8] {
&level3::BASIS_E0_QX_BYTES
}
fn p_cofactor_for_2f() -> &'static [u64] {
level3::P_COFACTOR_FOR_2F
}
fn p_cofactor_for_2f_bitlength() -> u32 {
level3::P_COFACTOR_FOR_2F_BITLENGTH
}
fn torsion_even_power() -> u32 {
level3::TORSION_EVEN_POWER
}
fn splitting_transforms() -> &'static [[[u8; 4]; 4]; 10] {
&level3::SPLITTING_TRANSFORMS
}
fn normalization_transforms() -> &'static [[[u8; 4]; 4]; 6] {
&level3::NORMALIZATION_TRANSFORMS
}
fn chi_eval() -> &'static [[i32; 4]; 4] {
&level3::CHI_EVAL
}
fn even_index() -> &'static [[i32; 2]; 10] {
&level3::EVEN_INDEX
}
}
impl LevelPrecomp for crate::params::Level5 {
fn basis_e0_px_bytes() -> &'static [u8] {
&level5::BASIS_E0_PX_BYTES
}
fn basis_e0_qx_bytes() -> &'static [u8] {
&level5::BASIS_E0_QX_BYTES
}
fn p_cofactor_for_2f() -> &'static [u64] {
level5::P_COFACTOR_FOR_2F
}
fn p_cofactor_for_2f_bitlength() -> u32 {
level5::P_COFACTOR_FOR_2F_BITLENGTH
}
fn torsion_even_power() -> u32 {
level5::TORSION_EVEN_POWER
}
fn splitting_transforms() -> &'static [[[u8; 4]; 4]; 10] {
&level5::SPLITTING_TRANSFORMS
}
fn normalization_transforms() -> &'static [[[u8; 4]; 4]; 6] {
&level5::NORMALIZATION_TRANSFORMS
}
fn chi_eval() -> &'static [[i32; 4]; 4] {
&level5::CHI_EVAL
}
fn even_index() -> &'static [[i32; 2]; 10] {
&level5::EVEN_INDEX
}
}