aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-04-10 11:35:37 +0200
committerDaniel Schadt <kingdread@gmx.de>2025-04-10 18:22:46 +0200
commit55c58a7c18eaece91701999f57a2ae13003c5d06 (patch)
tree7da726ec71e0dbb037959b4a825fa7f29228d4c5 /src
parent1bf45c790ec55e1111d0b6846b42029a76effdd3 (diff)
downloadzears-55c58a7c18eaece91701999f57a2ae13003c5d06.tar.gz
zears-55c58a7c18eaece91701999f57a2ae13003c5d06.tar.bz2
zears-55c58a7c18eaece91701999f57a2ae13003c5d06.zip
rewrite aesenc to work in-place
speeds up encryption by a bit
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs50
1 files changed, 19 insertions, 31 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 210c7f8..13abce7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -247,44 +247,32 @@ impl Aez {
}
}
-fn aesenc(mut block: Block, key: &Block) -> block::Block {
+fn aesenc(block: &mut Block, key: &Block){
aes::hazmat::cipher_round((&mut block.0).into(), &key.0.into());
- block
}
fn aes4(keys: &[&Block; 5], block: &Block) -> Block {
- aesenc(
- aesenc(aesenc(aesenc(*block ^ *keys[0], keys[1]), keys[2]), keys[3]),
- keys[4],
- )
+ 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]);
+ r
}
fn aes10(keys: &[&Block; 11], block: &Block) -> Block {
- aesenc(
- aesenc(
- aesenc(
- aesenc(
- aesenc(
- aesenc(
- aesenc(
- aesenc(
- aesenc(aesenc(*block ^ *keys[0], keys[1]), keys[2]),
- keys[3],
- ),
- keys[4],
- ),
- keys[5],
- ),
- keys[6],
- ),
- keys[7],
- ),
- keys[8],
- ),
- keys[9],
- ),
- keys[10],
- )
+ 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]);
+ r
}
fn extract(key: &[u8]) -> [u8; 48] {