summaryrefslogtreecommitdiff
path: root/cipher/rijndael-internal.h
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2022-07-27 23:15:24 +0300
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2022-07-31 18:03:36 +0300
commitdb5136c4d9331c001bbe91cfe6625ae7738f8575 (patch)
tree2b8279083095354a63343e46580d5bea93ea2b0a /cipher/rijndael-internal.h
parent2ac6c24aa53024eb415d49f52229e868f72f47f8 (diff)
downloadlibgcrypt-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.h12
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 */