aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-04-10 11:38:18 +0200
committerDaniel Schadt <kingdread@gmx.de>2025-04-10 18:22:46 +0200
commit4c347cbcb9d608c57baf3081714b554e10c70314 (patch)
tree60b763b2f2e45e42205e731beab9386f396f6274 /src
parent86861181cc5d452da3009d46348bae743938e1bd (diff)
downloadzears-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.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 13abce7..54d8c86 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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;