diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-07-27 23:15:24 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-07-31 18:03:36 +0300 |
commit | db5136c4d9331c001bbe91cfe6625ae7738f8575 (patch) | |
tree | 2b8279083095354a63343e46580d5bea93ea2b0a /cipher/rijndael-internal.h | |
parent | 2ac6c24aa53024eb415d49f52229e868f72f47f8 (diff) | |
download | libgcrypt-db5136c4d9331c001bbe91cfe6625ae7738f8575.tar.gz |
Simplify AES key schedule implementation
* cipher/rijndael-armv8-ce.c (_gcry_aes_armv8_ce_setkey): New key
schedule with simplified structure and less stack usage.
* cipher/rijndael-internal.h (RIJNDAEL_context_s): Add
'keyschedule32b'.
(keyschenc32b): New.
* cipher/rijndael-ppc-common.h (vec_u32): New.
* cipher/rijndael-ppc.c (vec_bswap32_const): Remove.
(_gcry_aes_sbox4_ppc8): Optimize for less instructions emitted.
(keysched_idx): New.
(_gcry_aes_ppc8_setkey): New key schedule with simplified structure.
* cipher/rijndael-tables.h (rcon): Remove.
* cipher/rijndael.c (sbox4): New.
(do_setkey): New key schedule with simplified structure and less
stack usage.
--
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/rijndael-internal.h')
-rw-r--r-- | cipher/rijndael-internal.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/cipher/rijndael-internal.h b/cipher/rijndael-internal.h index 30604088..52c892fd 100644 --- a/cipher/rijndael-internal.h +++ b/cipher/rijndael-internal.h @@ -160,6 +160,7 @@ typedef struct RIJNDAEL_context_s PROPERLY_ALIGNED_TYPE dummy; byte keyschedule[MAXROUNDS+1][4][4]; u32 keyschedule32[MAXROUNDS+1][4]; + u32 keyschedule32b[(MAXROUNDS+1)*4]; #ifdef USE_PADLOCK /* The key as passed to the padlock engine. It is only used if the padlock engine is used (USE_PADLOCK, below). */ @@ -195,10 +196,11 @@ typedef struct RIJNDAEL_context_s } RIJNDAEL_context ATTR_ALIGNED_16; /* Macros defining alias for the keyschedules. */ -#define keyschenc u1.keyschedule -#define keyschenc32 u1.keyschedule32 -#define keyschdec u2.keyschedule -#define keyschdec32 u2.keyschedule32 -#define padlockkey u1.padlock_key +#define keyschenc u1.keyschedule +#define keyschenc32 u1.keyschedule32 +#define keyschenc32b u1.keyschedule32b +#define keyschdec u2.keyschedule +#define keyschdec32 u2.keyschedule32 +#define padlockkey u1.padlock_key #endif /* G10_RIJNDAEL_INTERNAL_H */ |