From f7f3c44acb8d7d1bc724479b447a6e5622cc7f31 Mon Sep 17 00:00:00 2001 From: Alivecow Date: Thu, 28 Nov 2024 14:00:47 +0100 Subject: [PATCH] feat: Add testing runner for edf --- src/tasks/mod.rs | 12 +++++++++--- src/tasks/tasks01/pfmath.rs | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/tasks/mod.rs b/src/tasks/mod.rs index a129f04..84a4f31 100644 --- a/src/tasks/mod.rs +++ b/src/tasks/mod.rs @@ -9,9 +9,9 @@ use tasks01::{ gfmul::gfmul_task, pad_oracle::padding_oracle, pfmath::{ - gfdiv, gfpoly_add, gfpoly_diff, gfpoly_divmod, gfpoly_factor_ddf, gfpoly_factor_sff, - gfpoly_gcd, gfpoly_make_monic, gfpoly_mul, gfpoly_pow, gfpoly_powmod, gfpoly_sort, - gfpoly_sqrt, + gfdiv, gfpoly_add, gfpoly_diff, gfpoly_divmod, gfpoly_factor_ddf, gfpoly_factor_edf, + gfpoly_factor_sff, gfpoly_gcd, gfpoly_make_monic, gfpoly_mul, gfpoly_pow, gfpoly_powmod, + gfpoly_sort, gfpoly_sqrt, }, poly2block::poly2block, sea128::sea128, @@ -170,6 +170,12 @@ pub fn task_deploy(testcase: &Testcase) -> Result { Ok(json) } + "gfpoly_factor_edf" => { + let result = gfpoly_factor_edf(args)?; + let json = json!({"factors" : result}); + + Ok(json) + } _ => Err(anyhow!( "Fatal. No compatible action found. Json data was {:?}. Arguments were; {:?}", diff --git a/src/tasks/tasks01/pfmath.rs b/src/tasks/tasks01/pfmath.rs index dec3b6e..0f5d134 100644 --- a/src/tasks/tasks01/pfmath.rs +++ b/src/tasks/tasks01/pfmath.rs @@ -9,6 +9,7 @@ use crate::{ utils::{ self, dff::ddf, + edf::edf, field::FieldElement, poly::{gcd, Polynomial}, sff::{sff, Factors}, @@ -159,6 +160,23 @@ pub fn gfpoly_factor_ddf(arsg: &Value) -> Result> { Ok(result) } +pub fn gfpoly_factor_edf(arsg: &Value) -> Result>> { + let poly_f = Polynomial::from_c_array(&arsg["F"].clone()); + let d: u32 = serde_json::from_value(arsg["d"].clone())?; + + let mut factors = edf(poly_f, d); + + factors.sort(); + + let mut result: Vec> = vec![]; + + for factor in factors { + result.push(factor.to_c_array()) + } + + Ok(result) +} + #[cfg(test)] mod tests { use super::*; -- 2.49.1