X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/4d47e1571e6a3fd88ebd956a18a4b362d2f98755..c97fbcf9622edc35b594bf574f553f7f13c21164:/rijndael-mktab.c diff --git a/rijndael-mktab.c b/rijndael-mktab.c index b07207b..0ecdfcd 100644 --- a/rijndael-mktab.c +++ b/rijndael-mktab.c @@ -1,13 +1,13 @@ /* -*-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 * * (c) 2000 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of Catacomb. * @@ -15,29 +15,18 @@ * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. - * + * * Catacomb is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. - * + * * You should have received a copy of the GNU Library General Public * License along with Catacomb; if not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * 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 @@ -95,7 +84,7 @@ static unsigned mul(unsigned x, unsigned y, unsigned m) * tables. Let %$a$% be an element of the finite field. If the inverse of * %$a$% is %$a^{-1}$%, then %$\log a a^{-1} = 0$%. Hence * %$\log a = -\log a^{-1}$%. This saves fiddling about with Euclidean - * algorithm. + * algorithm. */ #define S_MOD 0x11b @@ -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); @@ -297,18 +286,18 @@ int main(void) \\\n\ { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(", \\\n ", stdout); else fputs(", ", stdout); } - } + } fputs("\ #define RIJNDAEL_TI { \\\n\ { ", 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); @@ -317,7 +306,7 @@ int main(void) \\\n\ { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(", \\\n ", stdout); else fputs(", ", 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); @@ -342,11 +331,11 @@ int main(void) \\\n\ { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(", \\\n ", stdout); else fputs(", ", stdout); } - } + } /* --- Round constants --- */ @@ -364,7 +353,7 @@ int main(void) fputs(", \\\n ", stdout); else fputs(", ", stdout); - } + } /* --- Done --- */