diff options
author | Daniel Schadt <kingdread@gmx.de> | 2025-04-10 11:38:18 +0200 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2025-04-10 18:22:46 +0200 |
commit | 4c347cbcb9d608c57baf3081714b554e10c70314 (patch) | |
tree | 60b763b2f2e45e42205e731beab9386f396f6274 /src | |
parent | 86861181cc5d452da3009d46348bae743938e1bd (diff) | |
download | zears-4c347cbcb9d608c57baf3081714b554e10c70314.tar.gz zears-4c347cbcb9d608c57baf3081714b554e10c70314.tar.bz2 zears-4c347cbcb9d608c57baf3081714b554e10c70314.zip |
precompute e(0, 0, key)
adds more performance benefit
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -424,13 +424,14 @@ fn encipher_aez_core(key: &Key, tweaks: Tweak, message: &mut [u8]) { let mut x = Block::NULL; let mut e1_eval = E::new(1, 0, key); + let e0_eval = E::new(0, 0, key); for (raw_mi, raw_mi_) in blocks.pairs_mut() { e1_eval.advance(); let mi = Block::from(*raw_mi); let mi_ = Block::from(*raw_mi_); let wi = mi ^ e1_eval.eval(mi_); - let xi = mi_ ^ e(0, 0, key, wi); + let xi = mi_ ^ e0_eval.eval(wi); *raw_mi = wi.0; *raw_mi_ = xi.0; @@ -456,6 +457,7 @@ fn encipher_aez_core(key: &Key, tweaks: Tweak, message: &mut [u8]) { let mut y = Block::NULL; let mut e2_eval = E::new(2, 0, key); let mut e1_eval = E::new(1, 0, key); + let e0_eval = E::new(0, 0, key); for (raw_wi, raw_xi) in blocks.pairs_mut() { e2_eval.advance(); e1_eval.advance(); @@ -464,7 +466,7 @@ fn encipher_aez_core(key: &Key, tweaks: Tweak, message: &mut [u8]) { let s_ = e2_eval.eval(s); let yi = wi ^ s_; let zi = xi ^ s_; - let ci_ = yi ^ e(0, 0, key, zi); + let ci_ = yi ^ e0_eval.eval(zi); let ci = zi ^ e1_eval.eval(ci_); *raw_wi = ci.0; @@ -570,12 +572,13 @@ fn decipher_aez_core(key: &Key, tweaks: Tweak, buffer: &mut [u8]) { let mut y = Block::NULL; let mut e1_eval = E::new(1, 0, key); + let e0_eval = E::new(0, 0, key); for (raw_ci, raw_ci_) in blocks.pairs_mut() { e1_eval.advance(); let ci = Block::from(*raw_ci); let ci_ = Block::from(*raw_ci_); let wi = ci ^ e1_eval.eval(ci_); - let yi = ci_ ^ e(0, 0, key, wi); + let yi = ci_ ^ e0_eval.eval(wi); *raw_ci = wi.0; *raw_ci_ = yi.0; @@ -601,6 +604,7 @@ fn decipher_aez_core(key: &Key, tweaks: Tweak, buffer: &mut [u8]) { let mut x = Block::NULL; let mut e2_eval = E::new(2, 0, key); let mut e1_eval = E::new(1, 0, key); + let e0_eval = E::new(0, 0, key); for (raw_wi, raw_yi) in blocks.pairs_mut() { e2_eval.advance(); e1_eval.advance(); @@ -609,7 +613,7 @@ fn decipher_aez_core(key: &Key, tweaks: Tweak, buffer: &mut [u8]) { let s_ = e2_eval.eval(s); let xi = wi ^ s_; let zi = yi ^ s_; - let mi_ = xi ^ e(0, 0, key, zi); + let mi_ = xi ^ e0_eval.eval(zi); let mi = zi ^ e1_eval.eval(mi_); *raw_wi = mi.0; |