feat: both XEX enc/dec are working in atomic tests

This commit is contained in:
0xalivecow 2024-10-28 00:35:39 +01:00
parent 5c1c0f6c5e
commit c34557ea29
No known key found for this signature in database
6 changed files with 140 additions and 16 deletions

View file

@ -1,3 +1,5 @@
use base64::prelude::*;
use std::collections::HashMap;
use crate::utils::parse::{Responses, Testcase, Testcases};
@ -6,7 +8,7 @@ use tasks01::{block2poly::block2poly, gfmul::gfmul, poly2block::poly2block, sea1
use anyhow::{anyhow, Result};
use serde_json::{json, Value};
mod tasks01;
pub mod tasks01;
pub fn task_deploy(testcase: &Testcase) -> Result<Value> {
/*
@ -35,7 +37,13 @@ pub fn task_deploy(testcase: &Testcase) -> Result<Value> {
Ok(json)
}
"gfmul" => {
let result = gfmul(args)?;
let poly1_text: String = serde_json::from_value(args["a"].clone())?;
let poly_a = BASE64_STANDARD.decode(poly1_text)?;
let poly2_text: String = serde_json::from_value(args["b"].clone())?;
let poly_b = BASE64_STANDARD.decode(poly2_text)?;
let result = BASE64_STANDARD.encode(gfmul(poly_a, poly_b)?);
let json = json!({"product" : result});
Ok(json)
}
@ -67,7 +75,7 @@ mod tests {
#[test]
fn test_task_deploy() {
let json = fs::read_to_string("src/test_json/poly2block_example.json").unwrap();
let json = fs::read_to_string("test_json/poly2block_example.json").unwrap();
let parsed = parse_json(json).unwrap();
let testcase = parsed
.testcases
@ -83,7 +91,7 @@ mod tests {
#[test]
fn test_task_distribution() -> Result<()> {
let json = fs::read_to_string("src/test_json/poly2block_example.json").unwrap();
let json = fs::read_to_string("test_json/poly2block_example.json").unwrap();
let parsed = parse_json(json).unwrap();
let expected = json!({ "responses": { "b856d760-023d-4b00-bad2-15d2b6da22fe": {"block": "ARIAAAAAAAAAAAAAAAAAgA=="}}});
@ -98,7 +106,7 @@ mod tests {
#[test]
fn test_task_sea128_task_full() -> Result<()> {
let json = fs::read_to_string("src/test_json/sea128.json").unwrap();
let json = fs::read_to_string("test_json/sea128.json").unwrap();
let parsed = parse_json(json).unwrap();
let expected = json!({
@ -122,7 +130,7 @@ mod tests {
#[test]
fn test_task_gfmul_full() -> Result<()> {
let json = fs::read_to_string("src/test_json/gfmul_test.json").unwrap();
let json = fs::read_to_string("test_json/gfmul_test.json").unwrap();
let parsed = parse_json(json).unwrap();
let expected = json!({ "responses": { "b856d760-023d-4b00-bad2-15d2b6da22fe": {"product": "hSQAAAAAAAAAAAAAAAAAAA=="}}});

View file

@ -10,7 +10,7 @@ use crate::utils::{
pub const RED_POLY: u128 = 0x87000000_00000000_00000000_00000000;
pub fn gfmul(poly_a: Vec<u8>, poly_b: Vec<u8>) -> Result<String> {
pub fn gfmul(poly_a: Vec<u8>, poly_b: Vec<u8>) -> Result<Vec<u8>> {
let mut red_poly_bytes: ByteArray = ByteArray(RED_POLY.to_be_bytes().to_vec());
red_poly_bytes.0.push(0x01);
@ -42,10 +42,8 @@ pub fn gfmul(poly_a: Vec<u8>, poly_b: Vec<u8>) -> Result<String> {
}
result.0.remove(16);
let mut bytes: [u8; 16] = [0u8; 16];
bytes.copy_from_slice(&result.0);
Ok(BASE64_STANDARD.encode(bytes))
Ok(result.0)
}
#[cfg(test)]
@ -66,7 +64,7 @@ mod tests {
let poly2_text: String = serde_json::from_value(args["b"].clone())?;
let poly_b = BASE64_STANDARD.decode(poly2_text)?;
let result = gfmul(poly_a, poly_b)?;
let result = BASE64_STANDARD.encode(gfmul(poly_a, poly_b)?);
assert_eq!(
result, "hSQAAAAAAAAAAAAAAAAAAA==",

View file

@ -24,7 +24,7 @@ pub fn sea128(args: &Value) -> Result<String> {
Ok(output)
}
"decrypt" => {
let output = BASE64_STANDARD.encode(sea_128_decrypt(&key, &input)?);
let output = BASE64_STANDARD.encode(sea_128_decrypt(&key.into(), &input)?);
Ok(output)
}

0
src/tasks/tasks01/xex.rs Normal file
View file