summaryrefslogtreecommitdiff
path: root/aesdata.c
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2012-04-14 09:51:20 +0200
committerNiels Möller <nisse@lysator.liu.se>2012-04-14 09:51:20 +0200
commit273444366a27ea82bf282eaac8e33c8a956380ff (patch)
tree8183c7b095c9de737bc4d3d0d88a310ac234e570 /aesdata.c
parent8cf982222913b9765561e8dbd8a975bc3ea1134b (diff)
downloadnettle-273444366a27ea82bf282eaac8e33c8a956380ff.tar.gz
Reorganized aes_invert_key with new tables.
Diffstat (limited to 'aesdata.c')
-rw-r--r--aesdata.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/aesdata.c b/aesdata.c
index 9077c549..a62ab5ac 100644
--- a/aesdata.c
+++ b/aesdata.c
@@ -28,6 +28,7 @@ uint8_t gf2_exp[0x100];
uint32_t dtable[4][0x100];
uint32_t itable[4][0x100];
+uint32_t mtable[4][0x100];
static unsigned
xtime(unsigned x)
@@ -137,6 +138,24 @@ compute_itable(void)
}
}
+/* Used for key inversion, inverse mix column. No sbox. */
+static void
+compute_mtable(void)
+{
+ unsigned i;
+ for (i = 0; i<0x100; i++)
+ {
+ unsigned j;
+ uint32_t t = ( (mult(i, 0xb) << 24)
+ | (mult(i, 0xd) << 16)
+ | (mult(i, 0x9) << 8)
+ | (mult(i, 0xe) ));
+
+ for (j = 0; j<4; j++, t = (t << 8) | (t >> 24))
+ mtable[j][i] = t;
+ }
+}
+
static void
display_byte_table(const char *name, uint8_t *table)
{
@@ -200,7 +219,10 @@ main(int argc, char **argv)
compute_itable();
display_table("itable", itable);
-
+
+ compute_mtable();
+ display_table("mtable", mtable);
+
return 0;
}
else if (argc == 2)