Merge branch 'fixes'
[u/mdw/catacomb] / rijndael-mktab.c
index b07207b..1779709 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: rijndael-mktab.c,v 1.2 2000/06/18 23:12:15 mdw Exp $
+ * $Id: rijndael-mktab.c,v 1.4 2004/04/08 01:36:15 mdw Exp $
  *
  * Build precomputed tables for the Rijndael block cipher
  *
  * MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------* 
- *
- * $Log: rijndael-mktab.c,v $
- * Revision 1.2  2000/06/18 23:12:15  mdw
- * Change typesetting of Galois Field names.
- *
- * Revision 1.1  2000/06/17 11:56:07  mdw
- * New cipher.
- *
- */
-
 /*----- Header files ------------------------------------------------------*/
 
 #include <assert.h>
@@ -172,11 +161,11 @@ static void tbox(void)
     a = s[i];
     b = a << 1; if (b & 0x100) b ^= S_MOD;
     c = a ^ b;
-    w = (b << 0) | (a << 8) | (a << 16) | (c << 24);
+    w = (c << 0) | (a << 8) | (a << 16) | (b << 24);
     t[0][i] = w;
-    t[1][i] = ROL32(w, 8);
-    t[2][i] = ROL32(w, 16);
-    t[3][i] = ROL32(w, 24);
+    t[1][i] = ROR32(w, 8);
+    t[2][i] = ROR32(w, 16);
+    t[3][i] = ROR32(w, 24);
 
     /* --- Build a backwards t-box entry --- */
 
@@ -184,11 +173,11 @@ static void tbox(void)
     b = mul(si[i], 0x09, S_MOD);
     c = mul(si[i], 0x0d, S_MOD);
     d = mul(si[i], 0x0b, S_MOD);
-    w = (a << 0) | (b << 8) | (c << 16) | (d << 24);
+    w = (d << 0) | (c << 8) | (b << 16) | (a << 24);
     ti[0][i] = w;
-    ti[1][i] = ROL32(w, 8);
-    ti[2][i] = ROL32(w, 16);
-    ti[3][i] = ROL32(w, 24);
+    ti[1][i] = ROR32(w, 8);
+    ti[2][i] = ROR32(w, 16);
+    ti[3][i] = ROR32(w, 24);
   }
 }
 
@@ -208,17 +197,17 @@ static void ubox(void)
     b = mul(i, 0x09, S_MOD);
     c = mul(i, 0x0d, S_MOD);
     d = mul(i, 0x0b, S_MOD);
-    w = (a << 0) | (b << 8) | (c << 16) | (d << 24);
+    w = (d << 0) | (c << 8) | (b << 16) | (a << 24);
     u[0][i] = w;
-    u[1][i] = ROL32(w, 8);
-    u[2][i] = ROL32(w, 16);
-    u[3][i] = ROL32(w, 24);
+    u[1][i] = ROR32(w, 8);
+    u[2][i] = ROR32(w, 16);
+    u[3][i] = ROR32(w, 24);
   }
 }
 
 /* --- Round constants --- */
 
-void rcon(void)
+static void rcon(void)
 {
   unsigned r = 1;
   int i;
@@ -288,7 +277,7 @@ int main(void)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
-      printf("0x%08x", t[j][i]);
+      printf("0x%08lx", (unsigned long)t[j][i]);
       if (i == 255) {
        if (j == 3)
          fputs(" }                     \\\n}\n\n", stdout);
@@ -308,7 +297,7 @@ int main(void)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
-      printf("0x%08x", ti[j][i]);
+      printf("0x%08lx", (unsigned long)ti[j][i]);
       if (i == 255) {
        if (j == 3)
          fputs(" }                     \\\n}\n\n", stdout);
@@ -333,7 +322,7 @@ int main(void)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
-      printf("0x%08x", u[j][i]);
+      printf("0x%08lx", (unsigned long)u[j][i]);
       if (i == 255) {
        if (j == 3)
          fputs(" }                     \\\n}\n\n", stdout);