From a259cff1894c546647f0b975e2d061327a92f879 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Thu, 10 Apr 2025 13:38:19 +0200 Subject: don't pass arrays of keys to aes4 and aes10 --- src/lib.rs | 60 ++++++++++++++++++++---------------------------------------- 1 file changed, 20 insertions(+), 40 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 54d8c86..b00612f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -251,27 +251,27 @@ fn aesenc(block: &mut Block, key: &Block){ aes::hazmat::cipher_round((&mut block.0).into(), &key.0.into()); } -fn aes4(keys: &[&Block; 5], block: &Block) -> Block { - let mut r = *block ^ *keys[0]; - aesenc(&mut r, keys[1]); - aesenc(&mut r, keys[2]); - aesenc(&mut r, keys[3]); - aesenc(&mut r, keys[4]); +fn aes4(key_i: &Block, key_j: &Block, key_l: &Block, block: &Block) -> Block { + let mut r = *block; + aesenc(&mut r, key_j); + aesenc(&mut r, key_i); + aesenc(&mut r, key_l); + aesenc(&mut r, &Block::NULL); r } -fn aes10(keys: &[&Block; 11], block: &Block) -> Block { - let mut r = *block ^ *keys[0]; - aesenc(&mut r, keys[1]); - aesenc(&mut r, keys[2]); - aesenc(&mut r, keys[3]); - aesenc(&mut r, keys[4]); - aesenc(&mut r, keys[5]); - aesenc(&mut r, keys[6]); - aesenc(&mut r, keys[7]); - aesenc(&mut r, keys[8]); - aesenc(&mut r, keys[9]); - aesenc(&mut r, keys[10]); +fn aes10(key_i: &Block, key_j: &Block, key_l: &Block, block: &Block) -> Block { + let mut r = *block; + aesenc(&mut r, key_i); + aesenc(&mut r, key_j); + aesenc(&mut r, key_l); + aesenc(&mut r, key_i); + aesenc(&mut r, key_j); + aesenc(&mut r, key_l); + aesenc(&mut r, key_i); + aesenc(&mut r, key_j); + aesenc(&mut r, key_l); + aesenc(&mut r, key_i); r } @@ -764,32 +764,12 @@ impl E { fn eval(&self, block: Block) -> Block { match self.state { Estate::Neg { i } => { - let k = [ - &Block::NULL, - &self.key_i, - &self.key_j, - &self.key_l, - &self.key_i, - &self.key_j, - &self.key_l, - &self.key_i, - &self.key_j, - &self.key_l, - &self.key_i, - ]; let delta = self.key_l * i; - aes10(&k, &(block ^ delta)) + aes10(&self.key_i, &self.key_j, &self.key_l, &(block ^ delta)) } Estate::Pos { i, kj_t_j, ki_p_i } => { - let k = [ - &Block::NULL, - &self.key_j, - &self.key_i, - &self.key_l, - &Block::NULL, - ]; let delta = kj_t_j ^ ki_p_i ^ (self.key_l * (i % 8)); - aes4(&k, &(block ^ delta)) + aes4(&self.key_i, &self.key_j, &self.key_l, &(block ^ delta)) } } } -- cgit v1.2.3