Generate precomputed tables as sources in `precomps/'.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 2 Jun 2013 20:37:47 +0000 (21:37 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 22 Jun 2013 14:52:07 +0000 (15:52 +0100)
Rather than header files in the build tree.  The precomputations are
distributed, and not built in cross builds.

45 files changed:
.gitignore
math/Makefile.am
math/gfx-sqr-mktab.c
math/gfx-sqr.c
misc/Makefile.am
misc/gfshare-mktab.c
misc/gfshare.c
symm/.gitignore [new file with mode: 0644]
symm/Makefile.am
symm/blowfish-mktab.c
symm/blowfish.c
symm/cast-s.c
symm/cast-sk.c
symm/cast-tab.h [deleted file]
symm/des-base.c [deleted file]
symm/des-mktab.c
symm/desx-tab.c [new file with mode: 0644]
symm/desx-tab.h [deleted file]
symm/desx.c
symm/mars-mktab.c
symm/mars.c
symm/md2-tab.c [new file with mode: 0644]
symm/md2-tab.h [deleted file]
symm/md2.c
symm/rc2-tab.c [new file with mode: 0644]
symm/rc2-tab.h [deleted file]
symm/rc2.c
symm/rijndael-base.c
symm/rijndael-mktab.c
symm/safer-mktab.c
symm/safer.c
symm/safersk.c
symm/skipjack-tab.c [new file with mode: 0644]
symm/skipjack-tab.h [deleted file]
symm/skipjack.c
symm/square-mktab.c
symm/square.c
symm/tiger-base.h
symm/tiger-mktab.c
symm/tiger.c
symm/twofish-mktab.c
symm/twofish.c
symm/whirlpool-mktab.c
symm/whirlpool.c
vars.am

index e849112..7603014 100644 (file)
@@ -4,6 +4,7 @@ configure
 COPYING.LIB
 autom4te.cache
 config
 COPYING.LIB
 autom4te.cache
 config
+precomp
 progs/getdate.h
 progs/getdate.y
 symm/modes.am
 progs/getdate.h
 progs/getdate.y
 symm/modes.am
index 5bb546c..dfc5b58 100644 (file)
@@ -200,17 +200,20 @@ pkginclude_HEADERS        += limlee.h
 libmath_la_SOURCES     += limlee.c
 
 ## A table of small prime numbers.
 libmath_la_SOURCES     += limlee.c
 
 ## A table of small prime numbers.
-nodist_pkginclude_HEADERS += primetab.h
-nodist_libmath_la_SOURCES += primetab.c
-CLEANFILES             += primetab.h primetab.c
-BUILT_SOURCES          += primetab.h primetab.c
-noinst_PROGRAMS                += genprimes
+pkginclude_HEADERS     += $(precomp)/primetab.h
+libmath_la_SOURCES     += $(precomp)/primetab.c
+PRECOMPS               += $(precomp)/primetab.h $(precomp)/primetab.c
+PRECOMP_PROGS          += genprimes
 genprimes_LDADD                 = $(mLib_LIBS)
 genprimes_LDADD                 = $(mLib_LIBS)
-primetab.h: primetab.c
-primetab.c: genprimes$e
-       $(AM_V_GEN)./genprimes -hprimetab.h -cprimetab.c \
-               -sCATACOMB_PRIMETAB_H \
+if !CROSS_COMPILING
+$(precomp)/primetab.h: $(precomp)/primetab.c
+$(precomp)/primetab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) genprimes$e
+       $(AM_V_GEN)./genprimes -sCATACOMB_PRIMETAB_H \
+               -h$(precomp)/primetab.h -c$(precomp)/primetab.c \
                -n256 -t"unsigned short" -iprimetab
                -n256 -t"unsigned short" -iprimetab
+endif
 
 ## Filtering candidate prime numbers by checking for small factors
 ## efficiently.
 
 ## Filtering candidate prime numbers by checking for small factors
 ## efficiently.
@@ -235,7 +238,7 @@ libmath_la_SOURCES  += prim.c
 pkginclude_HEADERS     += primeiter.h
 libmath_la_SOURCES     += primeiter.c
 TESTS                  += primeiter.$t
 pkginclude_HEADERS     += primeiter.h
 libmath_la_SOURCES     += primeiter.c
 TESTS                  += primeiter.$t
-primeiter.lo: wheel.h
+primeiter.lo: $(precomp)/wheel.h
 
 ## The Miller--Rabin primality test.
 pkginclude_HEADERS     += rabin.h
 
 ## The Miller--Rabin primality test.
 pkginclude_HEADERS     += rabin.h
@@ -247,16 +250,20 @@ pkginclude_HEADERS        += strongprime.h
 libmath_la_SOURCES     += strongprime.c
 
 ## A `wheel', used by the prime iteration machinery.
 libmath_la_SOURCES     += strongprime.c
 
 ## A `wheel', used by the prime iteration machinery.
-nodist_pkginclude_HEADERS += wheel.h
-nodist_libmath_la_SOURCES += wheel.c
-CLEANFILES             += wheel.h wheel.c
-noinst_PROGRAMS                += genwheel
+pkginclude_HEADERS     += $(precomp)/wheel.h
+libmath_la_SOURCES     += $(precomp)/wheel.c
+PRECOMPS               += $(precomp)/wheel.h $(precomp)/wheel.c
+PRECOMP_PROGS          += genwheel
 genwheel_LDADD          = $(mLib_LIBS)
 genwheel_LDADD          = $(mLib_LIBS)
-wheel.h: wheel.c
-wheel.c: genwheel$e
-       $(AM_V_GEN)./genwheel -hwheel.h -cwheel.c \
-               -sCATACOMB_WHEEL_H \
+if !CROSS_COMPILING
+$(precomp)/wheel.h: $(precomp)/wheel.c
+$(precomp)/wheel.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) genwheel$e
+       $(AM_V_GEN)./genwheel -sCATACOMB_WHEEL_H \
+               -h$(precomp)/wheel.h -c$(precomp)/wheel.c \
                -n5 -t"unsigned char" -iwheel
                -n5 -t"unsigned char" -iwheel
+endif
 
 ###--------------------------------------------------------------------------
 ### Binary polynomial arithmetic.
 
 ###--------------------------------------------------------------------------
 ### Binary polynomial arithmetic.
@@ -276,14 +283,17 @@ libmath_la_SOURCES        += gfx.c
 TESTS                  += gfx.$t
 libmath_la_SOURCES     += gfx-kmul.c
 TESTS                  += gfx-kmul.$t
 TESTS                  += gfx.$t
 libmath_la_SOURCES     += gfx-kmul.c
 TESTS                  += gfx-kmul.$t
-libmath_la_SOURCES     += gfx-sqr.c
-gfx-sqr.lo: gfx-sqr-tab.h
+libmath_la_SOURCES     += gfx-sqr.c $(precomp)/gfx-sqrtab.c
+PRECOMPS               += $(precomp)/gfx-sqrtab.c
+PRECOMP_PROGS          += gfx-sqr-mktab
+if !CROSS_COMPILING
+$(precomp)/gfx-sqrtab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) gfx-sqr-mktab$e
+       $(AM_V_GEN)./gfx-sqr-mktab >$(precomp)/gfx-sqrtab.c.new && \
+               mv $(precomp)/gfx-sqrtab.c.new $(precomp)/gfx-sqrtab.c
+endif
 TESTS                  += gfx-sqr.$t
 TESTS                  += gfx-sqr.$t
-CLEANFILES             += gfx-sqr-tab.h
-noinst_PROGRAMS                += gfx-sqr-mktab
-gfx-sqr-tab.h: gfx-sqr-mktab$e
-       $(AM_V_GEN)./gfx-sqr-mktab >gfx-sqr-tab.h.in && \
-               mv gfx-sqr-tab.h.in gfx-sqr-tab.h
 EXTRA_DIST             += t/gfx
 
 ## Conversions between normal and polynomial basis representations for binary
 EXTRA_DIST             += t/gfx
 
 ## Conversions between normal and polynomial basis representations for binary
index 1ecd995..efc610a 100644 (file)
@@ -60,24 +60,21 @@ fputs("\
  * Bit spacing table for binary polynomial squaring\n\
  */\n\
 \n\
  * Bit spacing table for binary polynomial squaring\n\
  */\n\
 \n\
-#ifndef GFX_SQR_TAB_H\n\
-#define GFX_SQR_TAB_H\n\
+#include <mLib/bits.h>\n\
 \n\
 \n\
-#define GFX_SQRTAB {                                                   \\\n\
+const uint16 gfx_sqrtab[256] = {\n\
   ", stdout);
 
   for (i = 0; i < 256; i++) {
     printf("0x%04x", t[i]);
     if (i == 255)
   ", stdout);
 
   for (i = 0; i < 256; i++) {
     printf("0x%04x", t[i]);
     if (i == 255)
-      puts("   \\\n}\n");
+      puts("\n};");
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(", \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
     else
       fputs(", ", stdout);
   }
 
-  fputs("#endif\n", stdout);
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index 8e26f36..ba54da8 100644 (file)
 
 #include "mpx.h"
 #include "gfx.h"
 
 #include "mpx.h"
 #include "gfx.h"
-#include "gfx-sqr-tab.h"
 
 /*----- Static variables --------------------------------------------------*/
 
 
 /*----- Static variables --------------------------------------------------*/
 
-static const uint16 tab[256] = GFX_SQRTAB;
+extern const uint16 gfx_sqrtab[256];
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -82,7 +81,7 @@ void gfx_sqr(mpw *dv, mpw *dvl, const mpw *av, const mpw *avl)
 
     /* --- Do the work in the middle --- */
 
 
     /* --- Do the work in the middle --- */
 
-    aa |= (mpd)(tab[U8(a)]) << bb;
+    aa |= (mpd)(gfx_sqrtab[U8(a)]) << bb;
     bb += 16;
     a >>= 8;
     b -= 8;
     bb += 16;
     a >>= 8;
     b -= 8;
@@ -101,7 +100,7 @@ void gfx_sqr(mpw *dv, mpw *dvl, const mpw *av, const mpw *avl)
   /* --- Flush the input buffer --- */
 
   if (b) for (;;) {
   /* --- Flush the input buffer --- */
 
   if (b) for (;;) {
-    aa |= (mpd)(tab[U8(a)]) << bb;
+    aa |= (mpd)(gfx_sqrtab[U8(a)]) << bb;
     bb += 16;
     if (bb > MPW_BITS) {
       *dv++ = MPW(aa);
     bb += 16;
     if (bb > MPW_BITS) {
       *dv++ = MPW(aa);
index f5f380a..54be12a 100644 (file)
@@ -29,18 +29,24 @@ include $(top_srcdir)/vars.am
 noinst_LTLIBRARIES      = libmisc.la
 libmisc_la_SOURCES      =
 
 noinst_LTLIBRARIES      = libmisc.la
 libmisc_la_SOURCES      =
 
+TEST_LIBS               = libmisc.la
+
 ###--------------------------------------------------------------------------
 ### Secret sharing.
 
 ## Efficient sharing over GF(2^8).
 pkginclude_HEADERS     += gfshare.h
 libmisc_la_SOURCES     += gfshare.c
 ###--------------------------------------------------------------------------
 ### Secret sharing.
 
 ## Efficient sharing over GF(2^8).
 pkginclude_HEADERS     += gfshare.h
 libmisc_la_SOURCES     += gfshare.c
-gfshare.lo: gfshare-tab.h
-CLEANFILES             += gfshare-tab.h
-noinst_PROGRAMS                += gfshare-mktab
-gfshare-tab.h: gfshare-mktab$e
-       $(AM_V_GEN)./gfshare-mktab >gfshare-tab.h.new && \
-               mv gfshare-tab.h.new gfshare-tab.h
+libmisc_la_SOURCES     += $(precomp)/gfshare-tab.c
+PRECOMPS               += $(precomp)/gfshare-tab.c
+PRECOMP_PROGS          += gfshare-mktab
+if !CROSS_COMPILING
+$(precomp)/gfshare-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) gfshare-mktab$e
+       $(AM_V_GEN)./gfshare-mktab >$(precomp)/gfshare-tab.c.new && \
+               mv $(precomp)/gfshare-tab.c.new $(precomp)/gfshare-tab.c
+endif
 TESTS                  += gfshare.$t
 
 ## Number-theoretic sharing over GF(p).
 TESTS                  += gfshare.$t
 
 ## Number-theoretic sharing over GF(p).
index 9fc073f..a47fae7 100644 (file)
@@ -61,40 +61,37 @@ int main(int argc, char *argv[])
  * Log tables for secret sharing in %$\\gf{2^8}$% [generated]\n\
  */\n\
 \n\
  * Log tables for secret sharing in %$\\gf{2^8}$% [generated]\n\
  */\n\
 \n\
-#ifndef GFSHARE_TAB_H\n\
-#define GFSHARE_TAB_H\n\
+#include <mLib/bits.h>\n\
 \n\
 \n\
-#define GFSHARE_LOG {                                                  \\\n\
+const octet gfshare_log[256] = {\n\
   ", stdout);
 
   for (i = 0; i < 256; i++) {
     printf("0x%02x", log[i]);
     if (i == 255)
   ", stdout);
 
   for (i = 0; i < 256; i++) {
     printf("0x%02x", log[i]);
     if (i == 255)
-      puts("                   \\\n}\n");
+      puts("\n};\n");
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
   fputs("\
     else
       fputs(", ", stdout);
   }
 
   fputs("\
-#define GFSHARE_EXP {                                                  \\\n\
+const octet gfshare_exp[510] = {\n\
   ", stdout);
 
   for (i = 0; i < 510; i++) {
     printf("0x%02x", alog[i % 255]);
     if (i == 509)
   ", stdout);
 
   for (i = 0; i < 510; i++) {
     printf("0x%02x", alog[i % 255]);
     if (i == 509)
-      puts("                                   \\\n}\n");
+      puts("\n};");
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
   /* --- Done --- */
 
     else
       fputs(", ", stdout);
   }
 
   /* --- Done --- */
 
-  fputs("#endif\n", stdout);
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index 0eb076b..80a6ef6 100644 (file)
 
 #include "arena.h"
 #include "gfshare.h"
 
 #include "arena.h"
 #include "gfshare.h"
-#include "gfshare-tab.h"
 #include "grand.h"
 
 /*----- Static variables --------------------------------------------------*/
 
 #include "grand.h"
 
 /*----- Static variables --------------------------------------------------*/
 
-static const octet gflog[] = GFSHARE_LOG, gfexp[] = GFSHARE_EXP;
+extern const octet gfshare_log[256], gfshare_exp[510];
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -121,7 +120,7 @@ void gfshare_get(gfshare *s, unsigned x, void *buf)
 {
   unsigned i;
   const octet *p = s->v;
 {
   unsigned i;
   const octet *p = s->v;
-  unsigned ilog = gflog[x + 1];
+  unsigned ilog = gfshare_log[x + 1];
 
   /* --- Evaluate the polynomial at %$x = i + 1$% --- */
 
 
   /* --- Evaluate the polynomial at %$x = i + 1$% --- */
 
@@ -134,7 +133,7 @@ void gfshare_get(gfshare *s, unsigned x, void *buf)
     for (k = 0; k < s->sz; k++) {
       unsigned qq = *q;
       if (qq)
     for (k = 0; k < s->sz; k++) {
       unsigned qq = *q;
       if (qq)
-       qq = gfexp[ilog + gflog[qq]];
+       qq = gfshare_exp[ilog + gfshare_log[qq]];
       *q++ = qq ^ *p++;
     }
   }
       *q++ = qq ^ *p++;
     }
   }
@@ -233,10 +232,10 @@ void gfshare_combine(gfshare *s, void *buf)
       if (i == j)
        continue;
       xj = GFSHARE_INDEX(s, j);
       if (i == j)
        continue;
       xj = GFSHARE_INDEX(s, j);
-      c += gflog[xj];
+      c += gfshare_log[xj];
       if (c >= 0xff)
        c -= 0xff;
       if (c >= 0xff)
        c -= 0xff;
-      ci += gflog[xi ^ xj];
+      ci += gfshare_log[xi ^ xj];
       if (ci >= 0xff)
        ci -= 0xff;
     }
       if (ci >= 0xff)
        ci -= 0xff;
     }
@@ -249,7 +248,7 @@ void gfshare_combine(gfshare *s, void *buf)
     p = buf;
     for (j = 0; j < s->sz; j++) {
       if (*q)
     p = buf;
     for (j = 0; j < s->sz; j++) {
       if (*q)
-       *p ^= gfexp[c + gflog[*q]];
+       *p ^= gfshare_exp[c + gfshare_log[*q]];
       p++, q++;
     }
   }
       p++, q++;
     }
   }
diff --git a/symm/.gitignore b/symm/.gitignore
new file mode 100644 (file)
index 0000000..55e2c17
--- /dev/null
@@ -0,0 +1 @@
+modes/
index 9c2895b..c4043d2 100644 (file)
@@ -32,7 +32,7 @@ nodist_libsymm_la_SOURCES =
 
 TEST_LIBS               = libsymm.la
 
 
 TEST_LIBS               = libsymm.la
 
-VPATH                  += modes
+VPATH                  += $(srcdir)/modes
 
 ###--------------------------------------------------------------------------
 ### Autogenerated lists.
 
 ###--------------------------------------------------------------------------
 ### Autogenerated lists.
@@ -89,17 +89,21 @@ pkginclude_HEADERS  += $(BLKC_H)
 
 ## Schneier's `Blowfish' block cipher.
 BLKCS                  += blowfish
 
 ## Schneier's `Blowfish' block cipher.
 BLKCS                  += blowfish
-blowfish.lo: blowfish-tab.h
-CLEANFILES             += blowfish-tab.h
-noinst_PROGRAMS                += blowfish-mktab
+libsymm_la_SOURCES     += $(precomp)/blowfish-tab.c
+PRECOMPS               += $(precomp)/blowfish-tab.c
+PRECOMP_PROGS          += blowfish-mktab
 blowfish_mktab_CPPFLAGS         = $(AM_CPPFLAGS) -DQUIET
 blowfish_mktab_CPPFLAGS         = $(AM_CPPFLAGS) -DQUIET
-blowfish-tab.h: blowfish-mktab$e
-       $(AM_V_GEN)./blowfish-mktab >blowfish-tab.h.new && \
-               mv blowfish-tab.h.new blowfish-tab.h
+if !CROSS_COMPILING
+$(precomp)/blowfish-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) blowfish-mktab$e
+       $(AM_V_GEN)./blowfish-mktab >$(precomp)/blowfish-tab.c.new && \
+               mv $(precomp)/blowfish-tab.c.new $(precomp)/blowfish-tab.c
+endif
 
 ## Adams and Tavares' `CAST' block ciphers.
 BLKCS                  += cast128 cast256
 
 ## Adams and Tavares' `CAST' block ciphers.
 BLKCS                  += cast128 cast256
-libsymm_la_SOURCES     += cast-s.c cast-sk.c cast-base.h cast-tab.h
+libsymm_la_SOURCES     += cast-s.c cast-sk.c cast-base.h
 cast256.$t: t/cast256
 EXTRA_DIST             += t/cast256.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/cast256
 cast256.$t: t/cast256
 EXTRA_DIST             += t/cast256.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/cast256
@@ -111,29 +115,36 @@ t/cast256: t/cast256.aes
 
 ## IBM's `DES' block cipher, by Feistel, Coppersmith, and others.
 BLKCS                  += des des3
 
 ## IBM's `DES' block cipher, by Feistel, Coppersmith, and others.
 BLKCS                  += des des3
-libsymm_la_SOURCES     += des-base.h des-base.c desx-tab.h
-des-base.lo: des-tab.h
-CLEANFILES             += des-tab.h
-noinst_PROGRAMS                += des-mktab
-des-tab.h: des-mktab$e
-       $(AM_V_GEN)./des-mktab >des-tab.h.new && \
-               mv des-tab.h.new des-tab.h
+libsymm_la_SOURCES     += des-base.h $(precomp)/des-tab.c
+PRECOMPS               += $(precomp)/des-tab.c
+PRECOMP_PROGS          += des-mktab
+if !CROSS_COMPILING
+$(precomp)/des-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) des-mktab$e
+       $(AM_V_GEN)./des-mktab >$(precomp)/des-tab.c.new && \
+               mv $(precomp)/des-tab.c.new $(precomp)/des-tab.c
+endif
 
 ## Rivest's `DESX' variant, with pre- and post-whitening.
 BLKCS                  += desx
 
 ## Rivest's `DESX' variant, with pre- and post-whitening.
 BLKCS                  += desx
-libsymm_la_SOURCES     += desx-tab.h
+libsymm_la_SOURCES     += desx-tab.c
 
 ## Lai and Massey's IDEA.
 BLKCS                  += idea
 
 ## IBM's `MARS' block cipher.
 BLKCS                  += mars
 
 ## Lai and Massey's IDEA.
 BLKCS                  += idea
 
 ## IBM's `MARS' block cipher.
 BLKCS                  += mars
-mars.lo: mars-tab.h
-CLEANFILES             += mars-tab.h
-noinst_PROGRAMS                += mars-mktab
-mars-tab.h: mars-mktab$e
-       $(AM_V_GEN)./mars-mktab >mars-tab.h.new && \
-               mv mars-tab.h.new mars-tab.h
+libsymm_la_SOURCES     += $(precomp)/mars-tab.c
+PRECOMPS               += $(precomp)/mars-tab.c
+PRECOMP_PROGS          += mars-mktab
+if !CROSS_COMPILING
+$(precomp)/mars-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) mars-mktab$e
+       $(AM_V_GEN)./mars-mktab >$(precomp)/mars-tab.c.new && \
+               mv $(precomp)/mars-tab.c.new $(precomp)/mars-tab.c
+endif
 mars.$t: t/mars
 EXTRA_DIST             += t/mars.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/mars
 mars.$t: t/mars
 EXTRA_DIST             += t/mars.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/mars
@@ -148,7 +159,7 @@ BLKCS                       += noekeon
 
 ## Rivest's `RC2' block cipher.
 BLKCS                  += rc2
 
 ## Rivest's `RC2' block cipher.
 BLKCS                  += rc2
-libsymm_la_SOURCES     += rc2-tab.h
+libsymm_la_SOURCES     += rc2-tab.c
 
 ## Rivest's `RC5'.
 BLKCS                  += rc5
 
 ## Rivest's `RC5'.
 BLKCS                  += rc5
@@ -156,12 +167,16 @@ BLKCS                     += rc5
 ## Daemen and Rijmen's `Rijndael' block cipher, selected as AES.
 BLKCS                  += rijndael rijndael192 rijndael256
 libsymm_la_SOURCES     += rijndael-base.h rijndael-base.c
 ## Daemen and Rijmen's `Rijndael' block cipher, selected as AES.
 BLKCS                  += rijndael rijndael192 rijndael256
 libsymm_la_SOURCES     += rijndael-base.h rijndael-base.c
-rijndael-base.lo: rijndael-tab.h
-CLEANFILES             += rijndael-tab.h
-noinst_PROGRAMS                += rijndael-mktab
-rijndael-tab.h: rijndael-mktab$e
-       $(AM_V_GEN)./rijndael-mktab >rijndael-tab.h.new && \
-               mv rijndael-tab.h.new rijndael-tab.h
+libsymm_la_SOURCES     += $(precomp)/rijndael-tab.c
+PRECOMPS               += $(precomp)/rijndael-tab.c
+PRECOMP_PROGS          += rijndael-mktab
+if !CROSS_COMPILING
+$(precomp)/rijndael-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) rijndael-mktab$e
+       $(AM_V_GEN)./rijndael-mktab >$(precomp)/rijndael-tab.c.new && \
+               mv $(precomp)/rijndael-tab.c.new $(precomp)/rijndael-tab.c
+endif
 rijndael.$t: t/rijndael
 EXTRA_DIST             += t/rijndael.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/rijndael
 rijndael.$t: t/rijndael
 EXTRA_DIST             += t/rijndael.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/rijndael
@@ -173,17 +188,21 @@ t/rijndael: t/rijndael.aes
 
 ## Massey's `SAFER' block ciphers.
 BLKCS                  += safer safersk
 
 ## Massey's `SAFER' block ciphers.
 BLKCS                  += safer safersk
-safer.lo: safer-tab.h
-CLEANFILES             += safer-tab.h
-noinst_PROGRAMS                += safer-mktab
-safer-tab.h: safer-mktab$e
-       $(AM_V_GEN)./safer-mktab >safer-tab.h.new && \
-               mv safer-tab.h.new safer-tab.h
+libsymm_la_SOURCES     += $(precomp)/safer-tab.c
+PRECOMPS               += $(precomp)/safer-tab.c
+PRECOMP_PROGS          += safer-mktab
+if !CROSS_COMPILING
+$(precomp)/safer-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) safer-mktab$e
+       $(AM_V_GEN)./safer-mktab >$(precomp)/safer-tab.c.new && \
+               mv $(precomp)/safer-tab.c.new $(precomp)/safer-tab.c
+endif
 
 ## Anderson, Biham and Knudsen's `Serpent' block cipher.
 BLKCS                  += serpent
 libsymm_la_SOURCES     += serpent-sbox.h
 
 ## Anderson, Biham and Knudsen's `Serpent' block cipher.
 BLKCS                  += serpent
 libsymm_la_SOURCES     += serpent-sbox.h
-noinst_PROGRAMS                += serpent-check
+check_PROGRAMS         += serpent-check
 TESTS                  += serpent-check
 serpent.$t: t/serpent
 EXTRA_DIST             += t/serpent.aes
 TESTS                  += serpent-check
 serpent.$t: t/serpent
 EXTRA_DIST             += t/serpent.aes
@@ -197,16 +216,20 @@ t/serpent: t/serpent.aes
 ## The National Security Agency's `Skipjack' block cipher.  You don't want to
 ## use this.
 BLKCS                  += skipjack
 ## The National Security Agency's `Skipjack' block cipher.  You don't want to
 ## use this.
 BLKCS                  += skipjack
-libsymm_la_SOURCES     += skipjack-tab.h
+libsymm_la_SOURCES     += skipjack-tab.c
 
 ## Daemen and Rijmen's `Square' block cipher.
 BLKCS                  += square
 
 ## Daemen and Rijmen's `Square' block cipher.
 BLKCS                  += square
-square.lo: square-tab.h
-CLEANFILES             += square-tab.h
-noinst_PROGRAMS                += square-mktab
-square-tab.h: square-mktab$e
-       $(AM_V_GEN)./square-mktab >square-tab.h.new && \
-               mv square-tab.h.new square-tab.h
+libsymm_la_SOURCES     += $(precomp)/square-tab.c
+PRECOMPS               += $(precomp)/square-tab.c
+PRECOMP_PROGS          += square-mktab
+if !CROSS_COMPILING
+$(precomp)/square-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) square-mktab$e
+       $(AM_V_GEN)./square-mktab >$(precomp)/square-tab.c.new && \
+               mv $(precomp)/square-tab.c.new $(precomp)/square-tab.c
+endif
 
 ## Wheeler and Needham's `TEA' and `XTEA' block ciphers.
 BLKCS                  += tea xtea
 
 ## Wheeler and Needham's `TEA' and `XTEA' block ciphers.
 BLKCS                  += tea xtea
@@ -214,12 +237,16 @@ BLKCS                     += tea xtea
 ## Schneier, Kelsey, Whiting, Wagner, Hall and Ferguson's `Twofish' block
 ## cipher.
 BLKCS                  += twofish
 ## Schneier, Kelsey, Whiting, Wagner, Hall and Ferguson's `Twofish' block
 ## cipher.
 BLKCS                  += twofish
-twofish.lo: twofish-tab.h
-CLEANFILES             += twofish-tab.h
-noinst_PROGRAMS                += twofish-mktab
-twofish-tab.h: twofish-mktab$e
-       $(AM_V_GEN)./twofish-mktab >twofish-tab.h.new && \
-               mv twofish-tab.h.new twofish-tab.h
+libsymm_la_SOURCES     += $(precomp)/twofish-tab.c
+PRECOMPS               += $(precomp)/twofish-tab.c
+PRECOMP_PROGS          += twofish-mktab
+if !CROSS_COMPILING
+$(precomp)/twofish-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) twofish-mktab$e
+       $(AM_V_GEN)./twofish-mktab >$(precomp)/twofish-tab.c.new && \
+               mv $(precomp)/twofish-tab.c.new $(precomp)/twofish-tab.c
+endif
 twofish.$t: t/twofish
 EXTRA_DIST             += t/twofish.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/twofish
 twofish.$t: t/twofish
 EXTRA_DIST             += t/twofish.aes
 MAINTAINERCLEANFILES   += $(srcdir)/t/twofish
@@ -259,7 +286,7 @@ HASHES                      += has160
 
 ## Rivest's `MD' series of hash functions
 HASHES                 += md2 md4 md5
 
 ## Rivest's `MD' series of hash functions
 HASHES                 += md2 md4 md5
-libsymm_la_SOURCES     += md2-tab.h
+libsymm_la_SOURCES     += md2-tab.c
 
 ## Dobbertin, Bosselaers and Preneel's `RIPEMD' suite.
 HASHES                 += rmd128 rmd160 rmd256 rmd320
 
 ## Dobbertin, Bosselaers and Preneel's `RIPEMD' suite.
 HASHES                 += rmd128 rmd160 rmd256 rmd320
@@ -273,22 +300,29 @@ HASHES                    += sha384 sha512
 
 ## Anderson and Biham's `Tiger' hash function.
 HASHES                 += tiger
 
 ## Anderson and Biham's `Tiger' hash function.
 HASHES                 += tiger
-libsymm_la_SOURCES     += tiger-base.h
-tiger.lo: tiger-tab.h
-CLEANFILES             += tiger-tab.h
-noinst_PROGRAMS                += tiger-mktab
-tiger-tab.h: tiger-mktab$e
-       $(AM_V_GEN)./tiger-mktab >tiger-tab.h.new && \
-               mv tiger-tab.h.new tiger-tab.h
+libsymm_la_SOURCES     += tiger-base.h $(precomp)/tiger-tab.c
+PRECOMPS               += $(precomp)/tiger-tab.c
+PRECOMP_PROGS          += tiger-mktab
+if !CROSS_COMPILING
+$(precomp)/tiger-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) tiger-mktab$e
+       $(AM_V_GEN)./tiger-mktab >$(precomp)/tiger-tab.c.new && \
+               mv $(precomp)/tiger-tab.c.new $(precomp)/tiger-tab.c
+endif
 
 ## Barreto and Rijmen's `Whirlpool' hash function.
 HASHES                 += whirlpool whirlpool256
 
 ## Barreto and Rijmen's `Whirlpool' hash function.
 HASHES                 += whirlpool whirlpool256
-whirlpool.lo: whirlpool-tab.h
-CLEANFILES             += whirlpool-tab.h
-noinst_PROGRAMS                += whirlpool-mktab
-whirlpool-tab.h: whirlpool-mktab$e
-       $(AM_V_GEN)./whirlpool-mktab >whirlpool-tab.h.new && \
-               mv whirlpool-tab.h.new whirlpool-tab.h
+libsymm_la_SOURCES     += $(precomp)/whirlpool-tab.c
+PRECOMPS               += $(precomp)/whirlpool-tab.c
+PRECOMP_PROGS          += whirlpool-mktab
+if !CROSS_COMPILING
+$(precomp)/whirlpool-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)
+       $(AM_V_at)$(MAKE) whirlpool-mktab$e
+       $(AM_V_GEN)./whirlpool-mktab >$(precomp)/whirlpool-tab.c.new && \
+               mv $(precomp)/whirlpool-tab.c.new $(precomp)/whirlpool-tab.c
+endif
 
 ## Bellare, Canetti and Krawczyk's `HMAC' mode for message authentication.
 HASHMACMODES           += hmac
 
 ## Bellare, Canetti and Krawczyk's `HMAC' mode for message authentication.
 HASHMACMODES           += hmac
@@ -322,36 +356,39 @@ ALL_CIPHERS               += seal
 ### Autogenerated mode implementations.
 
 ## The master stamp file, indicating that we generated all of the sources.
 ### Autogenerated mode implementations.
 
 ## The master stamp file, indicating that we generated all of the sources.
-CLEANFILES             += modes/gen-stamp
 EXTRA_DIST             += mode.h.in mode.c.in
 EXTRA_DIST             += mode.h.in mode.c.in
+EXTRA_DIST             += modes/gen-stamp
+MAINTAINERCLEANFILES   += modes/gen-stamp
 modes/gen-stamp:
 modes/gen-stamp:
-       $(AM_V_at)$(MKDIR_P) modes
+       $(AM_V_at)$(MKDIR_P) $(srcdir)/modes
        $(AM_V_GEN)$(multigen) -g $(srcdir)/mode.c.in \
        $(AM_V_GEN)$(multigen) -g $(srcdir)/mode.c.in \
-               modes/@base-@mode.c \
+               $(srcdir)/modes/@base-@mode.c \
                base="$(BLKCS)" mode="$(BLKCMODES)"
        $(AM_V_at)$(multigen) -g $(srcdir)/mode.h.in \
                base="$(BLKCS)" mode="$(BLKCMODES)"
        $(AM_V_at)$(multigen) -g $(srcdir)/mode.h.in \
-               modes/@base-@mode.h \
+               $(srcdir)/modes/@base-@mode.h \
                base="$(BLKCS)" mode="$(BLKCMODES)"
        $(AM_V_at)$(multigen) -g $(srcdir)/mode.c.in \
                base="$(BLKCS)" mode="$(BLKCMODES)"
        $(AM_V_at)$(multigen) -g $(srcdir)/mode.c.in \
-               modes/@base-@mode.c \
+               $(srcdir)/modes/@base-@mode.c \
                base="$(HASHES)" mode="$(HASHMODES)"
        $(AM_V_at)$(multigen) -g $(srcdir)/mode.h.in \
                base="$(HASHES)" mode="$(HASHMODES)"
        $(AM_V_at)$(multigen) -g $(srcdir)/mode.h.in \
-               modes/@base-@mode.h \
+               $(srcdir)/modes/@base-@mode.h \
                base="$(HASHES)" mode="$(HASHMODES)"
                base="$(HASHES)" mode="$(HASHMODES)"
-       $(AM_V_at)touch modes/gen-stamp
+       $(AM_V_at)touch $(srcdir)/modes/gen-stamp
 
 ## The individual mode interfaces and implementations.
 pkginclude_HEADERS     += $(MODE_H)
 
 ## Generated implementations.
 BUILT_SOURCES          += $(GENMODES_C)
 
 ## The individual mode interfaces and implementations.
 pkginclude_HEADERS     += $(MODE_H)
 
 ## Generated implementations.
 BUILT_SOURCES          += $(GENMODES_C)
-CLEANFILES             += $(GENMODES_C)
+EXTRA_DIST             += $(GENMODES_C)
+MAINTAINERCLEANFILES   += $(GENMODES_C)
 nodist_libsymm_la_SOURCES += $(GENMODES_C)
 $(GENMODES_C): modes/gen-stamp
 
 ## Generated interfaces.
 BUILT_SOURCES          += $(GENMODES_H)
 nodist_libsymm_la_SOURCES += $(GENMODES_C)
 $(GENMODES_C): modes/gen-stamp
 
 ## Generated interfaces.
 BUILT_SOURCES          += $(GENMODES_H)
-CLEANFILES             += $(GENMODES_H)
+EXTRA_DIST             += $(GENMODES_H)
+MAINTAINERCLEANFILES   += $(GENMODES_H)
 nodist_pkginclude_HEADERS += $(GENMODES_H)
 $(GENMODES_H): modes/gen-stamp
 
 nodist_pkginclude_HEADERS += $(GENMODES_H)
 $(GENMODES_H): modes/gen-stamp
 
index 752fb32..72b4fc7 100644 (file)
@@ -145,20 +145,17 @@ int main(void)
  * Blowfish initial key table [generated]\n\
  */\n\
 \n\
  * Blowfish initial key table [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_BLOWFISH_TAB_H\n\
-#define CATACOMB_BLOWFISH_TAB_H\n\
+#include \"blowfish.h\"\n\
 \n\
 \n\
-#define BLOWFISH_IKEY {                                                        \\\n\
+const blowfish_ctx blowfish_ikey = {\n\
   { ", stdout);
 
   for (i = 0; i < 18; i++) {
     printf("0x%08x", *d++);
     if (i == 17)
   { ", stdout);
 
   for (i = 0; i < 18; i++) {
     printf("0x%08x", *d++);
     if (i == 17)
-      fputs(" },                                               \\\n\
-                                                                       \\\n\
-  { ", stdout);
+      fputs(" },\n\n  { ", stdout);
     else if (i % 4 == 3)
     else if (i % 4 == 3)
-      fputs(",                 \\\n    ", stdout);
+      fputs(",\n    ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -168,13 +165,11 @@ int main(void)
     printf("0x%08x", *d++);
     if (i == 255) {
       if (j == 3)
     printf("0x%08x", *d++);
     if (i == 255) {
       if (j == 3)
-       fputs(" }                       \\\n}\n\n#endif\n", stdout);
+       fputs(" }\n};\n", stdout);
       else
       else
-       fputs(" },                      \\\n\
-                                                                       \\\n\
-  { ", stdout);
+       fputs(" },\n\n  { ", stdout);
     } else if (i % 4 == 3)
     } else if (i % 4 == 3)
-      fputs(",                 \\\n    ", stdout);
+      fputs(",\n    ", stdout);
     else
       fputs(", ", stdout);
     }
     else
       fputs(", ", stdout);
     }
index 4bfb84d..c4903c1 100644 (file)
 #include <mLib/bits.h>
 
 #include "blowfish.h"
 #include <mLib/bits.h>
 
 #include "blowfish.h"
-#include "blowfish-tab.h"
 #include "blkc.h"
 #include "gcipher.h"
 #include "paranoia.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 #include "blkc.h"
 #include "gcipher.h"
 #include "paranoia.h"
 
 /*----- Global variables --------------------------------------------------*/
 
-static const blowfish_ctx ikey = BLOWFISH_IKEY;
+extern const blowfish_ctx blowfish_ikey;
 
 const octet blowfish_keysz[] = { KSZ_RANGE, BLOWFISH_KEYSZ, 1, 56, 1 };
 
 
 const octet blowfish_keysz[] = { KSZ_RANGE, BLOWFISH_KEYSZ, 1, 56, 1 };
 
@@ -119,7 +118,7 @@ void blowfish_init(blowfish_ctx *k, const void *buf, size_t sz)
 
   /* --- Copy the initial value over --- */
 
 
   /* --- Copy the initial value over --- */
 
-  memcpy(k, &ikey, sizeof(ikey));
+  *k = blowfish_ikey;
 
   /* --- Initialize the %$P$% array --- */
 
 
   /* --- Initialize the %$P$% array --- */
 
index 968d888..f0adea6 100644 (file)
 #include <mLib/bits.h>
 
 #include "cast-base.h"
 #include <mLib/bits.h>
 
 #include "cast-base.h"
-#include "cast-tab.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 
 /*----- Global variables --------------------------------------------------*/
 
-const uint32 cast_s[4][256] = CAST_S;
+const uint32 cast_s[4][256] = {
+
+  { 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a,
+    0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,
+    0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675,
+    0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e,
+    0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2,
+    0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d,
+    0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f,
+    0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0,
+    0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de,
+    0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7,
+    0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f,
+    0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935,
+    0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d,
+    0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d,
+    0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165,
+    0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50,
+    0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272,
+    0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe,
+    0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d,
+    0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3,
+    0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a,
+    0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167,
+    0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f,
+    0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291,
+    0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9,
+    0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779,
+    0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6,
+    0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2,
+    0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9,
+    0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511,
+    0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e,
+    0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d,
+    0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e,
+    0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5,
+    0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82,
+    0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324,
+    0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac,
+    0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c,
+    0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f,
+    0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc,
+    0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491,
+    0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d,
+    0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de,
+    0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96,
+    0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a,
+    0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a,
+    0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79,
+    0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d,
+    0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779,
+    0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd,
+    0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755,
+    0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6,
+    0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb,
+    0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9,
+    0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0,
+    0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872,
+    0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79,
+    0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c,
+    0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298,
+    0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e,
+    0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571,
+    0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9,
+    0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d,
+    0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf },
+
+  { 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380,
+    0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651,
+    0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba,
+    0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3,
+    0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909,
+    0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb,
+    0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b,
+    0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806,
+    0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4,
+    0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b,
+    0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f,
+    0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359,
+    0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21,
+    0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b,
+    0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d,
+    0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c,
+    0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f,
+    0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34,
+    0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d,
+    0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb,
+    0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4,
+    0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd,
+    0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801,
+    0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860,
+    0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755,
+    0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b,
+    0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709,
+    0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304,
+    0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b,
+    0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b,
+    0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c,
+    0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf,
+    0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9,
+    0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c,
+    0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3,
+    0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13,
+    0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9,
+    0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f,
+    0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab,
+    0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6,
+    0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4,
+    0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6,
+    0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43,
+    0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58,
+    0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8,
+    0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906,
+    0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171,
+    0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d,
+    0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89,
+    0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6,
+    0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b,
+    0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4,
+    0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb,
+    0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6,
+    0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e,
+    0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f,
+    0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea,
+    0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249,
+    0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea,
+    0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa,
+    0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd,
+    0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9,
+    0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef,
+    0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1 },
+
+  { 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907,
+    0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90,
+    0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae,
+    0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5,
+    0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e,
+    0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e,
+    0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc,
+    0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240,
+    0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e,
+    0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5,
+    0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f,
+    0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b,
+    0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99,
+    0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71,
+    0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f,
+    0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04,
+    0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380,
+    0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82,
+    0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8,
+    0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15,
+    0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504,
+    0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2,
+    0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6,
+    0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176,
+    0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e,
+    0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148,
+    0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d,
+    0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc,
+    0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1,
+    0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341,
+    0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c,
+    0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e,
+    0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15,
+    0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51,
+    0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4,
+    0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f,
+    0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b,
+    0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a,
+    0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392,
+    0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b,
+    0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231,
+    0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b,
+    0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889,
+    0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5,
+    0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67,
+    0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45,
+    0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49,
+    0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536,
+    0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d,
+    0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc,
+    0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d,
+    0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0,
+    0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e,
+    0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69,
+    0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767,
+    0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2,
+    0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce,
+    0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49,
+    0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24,
+    0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d,
+    0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0,
+    0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a,
+    0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5,
+    0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783 },
+
+  { 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298,
+    0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1,
+    0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120,
+    0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf,
+    0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220,
+    0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15,
+    0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe,
+    0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121,
+    0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701,
+    0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25,
+    0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b,
+    0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5,
+    0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93,
+    0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb,
+    0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746,
+    0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5,
+    0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9,
+    0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d,
+    0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb,
+    0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6,
+    0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c,
+    0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23,
+    0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7,
+    0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003,
+    0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340,
+    0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6,
+    0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327,
+    0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119,
+    0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec,
+    0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24,
+    0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205,
+    0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a,
+    0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031,
+    0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79,
+    0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5,
+    0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df,
+    0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c,
+    0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26,
+    0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69,
+    0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab,
+    0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9,
+    0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7,
+    0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff,
+    0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417,
+    0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3,
+    0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2,
+    0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2,
+    0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2,
+    0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff,
+    0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a,
+    0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091,
+    0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919,
+    0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df,
+    0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef,
+    0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf,
+    0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876,
+    0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367,
+    0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab,
+    0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c,
+    0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04,
+    0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43,
+    0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282,
+    0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e,
+    0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2 }
+};
 
 /*----- That's all, folks -------------------------------------------------*/
 
 /*----- That's all, folks -------------------------------------------------*/
index d1620ee..0b2db4a 100644 (file)
 #include <mLib/bits.h>
 
 #include "cast-base.h"
 #include <mLib/bits.h>
 
 #include "cast-base.h"
-#include "cast-tab.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 
 /*----- Global variables --------------------------------------------------*/
 
-const uint32 cast_sk[4][256] = CAST_SK;
+const uint32 cast_sk[4][256] = {
+
+  { 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911,
+    0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f,
+    0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00,
+    0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a,
+    0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180,
+    0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff,
+    0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2,
+    0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02,
+    0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725,
+    0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a,
+    0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b,
+    0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7,
+    0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571,
+    0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9,
+    0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec,
+    0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981,
+    0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea,
+    0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774,
+    0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263,
+    0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655,
+    0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468,
+    0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2,
+    0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b,
+    0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910,
+    0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284,
+    0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1,
+    0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4,
+    0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da,
+    0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7,
+    0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049,
+    0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce,
+    0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f,
+    0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6,
+    0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba,
+    0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4,
+    0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be,
+    0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561,
+    0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3,
+    0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6,
+    0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840,
+    0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406,
+    0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4,
+    0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472,
+    0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2,
+    0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487,
+    0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7,
+    0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288,
+    0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5,
+    0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2,
+    0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e,
+    0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78,
+    0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e,
+    0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76,
+    0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801,
+    0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0,
+    0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad,
+    0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58,
+    0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0,
+    0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2,
+    0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20,
+    0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be,
+    0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8,
+    0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55,
+    0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4 },
+
+  { 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c,
+    0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac,
+    0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9,
+    0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138,
+    0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e,
+    0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367,
+    0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866,
+    0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98,
+    0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c,
+    0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072,
+    0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd,
+    0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3,
+    0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53,
+    0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd,
+    0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d,
+    0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8,
+    0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf,
+    0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9,
+    0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807,
+    0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54,
+    0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a,
+    0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387,
+    0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563,
+    0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc,
+    0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0,
+    0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf,
+    0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be,
+    0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf,
+    0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0,
+    0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f,
+    0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2,
+    0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289,
+    0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853,
+    0x20951063, 0x4576698d, 0xb6fad407, 0x592af950,
+    0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa,
+    0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f,
+    0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9,
+    0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b,
+    0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751,
+    0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be,
+    0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358,
+    0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13,
+    0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397,
+    0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976,
+    0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459,
+    0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0,
+    0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4,
+    0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891,
+    0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f,
+    0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da,
+    0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb,
+    0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc,
+    0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2,
+    0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084,
+    0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab,
+    0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25,
+    0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b,
+    0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121,
+    0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b,
+    0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5,
+    0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855,
+    0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd,
+    0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454,
+    0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f },
+
+  { 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693,
+    0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f,
+    0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82,
+    0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de,
+    0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd,
+    0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43,
+    0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f,
+    0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19,
+    0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9,
+    0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2,
+    0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e,
+    0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516,
+    0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83,
+    0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88,
+    0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e,
+    0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816,
+    0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a,
+    0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756,
+    0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f,
+    0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a,
+    0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b,
+    0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264,
+    0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78,
+    0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688,
+    0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d,
+    0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28,
+    0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802,
+    0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3,
+    0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9,
+    0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7,
+    0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302,
+    0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06,
+    0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858,
+    0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033,
+    0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a,
+    0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a,
+    0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4,
+    0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566,
+    0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df,
+    0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509,
+    0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9,
+    0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962,
+    0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c,
+    0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e,
+    0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07,
+    0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c,
+    0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939,
+    0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c,
+    0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e,
+    0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285,
+    0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378,
+    0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301,
+    0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd,
+    0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be,
+    0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567,
+    0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767,
+    0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2,
+    0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647,
+    0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf,
+    0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914,
+    0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2,
+    0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c,
+    0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada,
+    0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3 },
+
+  { 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095,
+    0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5,
+    0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174,
+    0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc,
+    0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940,
+    0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd,
+    0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42,
+    0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d,
+    0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164,
+    0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2,
+    0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4,
+    0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862,
+    0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0,
+    0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc,
+    0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6,
+    0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c,
+    0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491,
+    0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e,
+    0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b,
+    0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039,
+    0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8,
+    0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8,
+    0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006,
+    0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42,
+    0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564,
+    0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5,
+    0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab,
+    0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472,
+    0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc,
+    0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225,
+    0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8,
+    0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c,
+    0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441,
+    0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb,
+    0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f,
+    0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054,
+    0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504,
+    0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70,
+    0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c,
+    0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc,
+    0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6,
+    0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c,
+    0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd,
+    0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3,
+    0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4,
+    0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4,
+    0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc,
+    0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101,
+    0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba,
+    0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f,
+    0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf,
+    0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e,
+    0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603,
+    0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a,
+    0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37,
+    0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c,
+    0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819,
+    0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384,
+    0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d,
+    0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c,
+    0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347,
+    0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82,
+    0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d,
+    0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e }
+};
 
 /*----- That's all, folks -------------------------------------------------*/
 
 /*----- That's all, folks -------------------------------------------------*/
diff --git a/symm/cast-tab.h b/symm/cast-tab.h
deleted file mode 100644 (file)
index b6e2f9f..0000000
+++ /dev/null
@@ -1,567 +0,0 @@
-/* -*-c-*-
- *
- * S-boxes for CAST-128 and CAST-256
- *
- * (c) 2000 Straylight/Edgeware
- */
-
-/*----- Licensing notice --------------------------------------------------*
- *
- * This file is part of Catacomb.
- *
- * Catacomb is free software; you can redistribute it and/or modify
- * 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.
- */
-
-#ifndef CATACOMB_CAST_TAB_H
-#define CATACOMB_CAST_TAB_H
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-
-/*----- S-box tables ------------------------------------------------------*/
-
-#define CAST_S {                                                       \
-  { 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a,                    \
-    0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,                    \
-    0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675,                    \
-    0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e,                    \
-    0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2,                    \
-    0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d,                    \
-    0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f,                    \
-    0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0,                    \
-    0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de,                    \
-    0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7,                    \
-    0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f,                    \
-    0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935,                    \
-    0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d,                    \
-    0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d,                    \
-    0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165,                    \
-    0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50,                    \
-    0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272,                    \
-    0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe,                    \
-    0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d,                    \
-    0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3,                    \
-    0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a,                    \
-    0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167,                    \
-    0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f,                    \
-    0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291,                    \
-    0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9,                    \
-    0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779,                    \
-    0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6,                    \
-    0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2,                    \
-    0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9,                    \
-    0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511,                    \
-    0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e,                    \
-    0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d,                    \
-    0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e,                    \
-    0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5,                    \
-    0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82,                    \
-    0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324,                    \
-    0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac,                    \
-    0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c,                    \
-    0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f,                    \
-    0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc,                    \
-    0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491,                    \
-    0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d,                    \
-    0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de,                    \
-    0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96,                    \
-    0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a,                    \
-    0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a,                    \
-    0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79,                    \
-    0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d,                    \
-    0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779,                    \
-    0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd,                    \
-    0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755,                    \
-    0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6,                    \
-    0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb,                    \
-    0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9,                    \
-    0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0,                    \
-    0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872,                    \
-    0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79,                    \
-    0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c,                    \
-    0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298,                    \
-    0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e,                    \
-    0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571,                    \
-    0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9,                    \
-    0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d,                    \
-    0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf },                  \
-                                                                       \
-  { 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380,                    \
-    0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651,                    \
-    0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba,                    \
-    0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3,                    \
-    0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909,                    \
-    0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb,                    \
-    0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b,                    \
-    0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806,                    \
-    0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4,                    \
-    0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b,                    \
-    0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f,                    \
-    0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359,                    \
-    0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21,                    \
-    0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b,                    \
-    0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d,                    \
-    0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c,                    \
-    0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f,                    \
-    0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34,                    \
-    0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d,                    \
-    0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb,                    \
-    0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4,                    \
-    0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd,                    \
-    0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801,                    \
-    0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860,                    \
-    0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755,                    \
-    0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b,                    \
-    0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709,                    \
-    0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304,                    \
-    0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b,                    \
-    0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b,                    \
-    0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c,                    \
-    0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf,                    \
-    0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9,                    \
-    0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c,                    \
-    0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3,                    \
-    0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13,                    \
-    0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9,                    \
-    0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f,                    \
-    0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab,                    \
-    0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6,                    \
-    0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4,                    \
-    0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6,                    \
-    0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43,                    \
-    0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58,                    \
-    0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8,                    \
-    0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906,                    \
-    0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171,                    \
-    0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d,                    \
-    0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89,                    \
-    0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6,                    \
-    0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b,                    \
-    0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4,                    \
-    0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb,                    \
-    0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6,                    \
-    0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e,                    \
-    0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f,                    \
-    0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea,                    \
-    0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249,                    \
-    0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea,                    \
-    0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa,                    \
-    0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd,                    \
-    0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9,                    \
-    0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef,                    \
-    0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1 },                  \
-                                                                       \
-  { 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907,                    \
-    0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90,                    \
-    0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae,                    \
-    0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5,                    \
-    0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e,                    \
-    0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e,                    \
-    0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc,                    \
-    0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240,                    \
-    0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e,                    \
-    0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5,                    \
-    0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f,                    \
-    0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b,                    \
-    0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99,                    \
-    0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71,                    \
-    0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f,                    \
-    0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04,                    \
-    0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380,                    \
-    0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82,                    \
-    0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8,                    \
-    0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15,                    \
-    0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504,                    \
-    0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2,                    \
-    0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6,                    \
-    0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176,                    \
-    0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e,                    \
-    0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148,                    \
-    0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d,                    \
-    0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc,                    \
-    0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1,                    \
-    0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341,                    \
-    0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c,                    \
-    0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e,                    \
-    0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15,                    \
-    0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51,                    \
-    0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4,                    \
-    0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f,                    \
-    0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b,                    \
-    0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a,                    \
-    0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392,                    \
-    0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b,                    \
-    0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231,                    \
-    0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b,                    \
-    0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889,                    \
-    0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5,                    \
-    0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67,                    \
-    0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45,                    \
-    0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49,                    \
-    0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536,                    \
-    0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d,                    \
-    0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc,                    \
-    0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d,                    \
-    0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0,                    \
-    0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e,                    \
-    0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69,                    \
-    0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767,                    \
-    0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2,                    \
-    0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce,                    \
-    0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49,                    \
-    0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24,                    \
-    0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d,                    \
-    0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0,                    \
-    0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a,                    \
-    0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5,                    \
-    0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783 },                  \
-                                                                       \
-  { 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298,                    \
-    0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1,                    \
-    0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120,                    \
-    0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf,                    \
-    0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220,                    \
-    0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15,                    \
-    0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe,                    \
-    0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121,                    \
-    0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701,                    \
-    0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25,                    \
-    0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b,                    \
-    0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5,                    \
-    0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93,                    \
-    0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb,                    \
-    0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746,                    \
-    0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5,                    \
-    0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9,                    \
-    0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d,                    \
-    0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb,                    \
-    0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6,                    \
-    0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c,                    \
-    0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23,                    \
-    0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7,                    \
-    0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003,                    \
-    0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340,                    \
-    0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6,                    \
-    0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327,                    \
-    0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119,                    \
-    0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec,                    \
-    0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24,                    \
-    0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205,                    \
-    0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a,                    \
-    0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031,                    \
-    0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79,                    \
-    0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5,                    \
-    0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df,                    \
-    0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c,                    \
-    0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26,                    \
-    0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69,                    \
-    0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab,                    \
-    0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9,                    \
-    0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7,                    \
-    0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff,                    \
-    0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417,                    \
-    0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3,                    \
-    0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2,                    \
-    0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2,                    \
-    0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2,                    \
-    0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff,                    \
-    0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a,                    \
-    0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091,                    \
-    0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919,                    \
-    0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df,                    \
-    0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef,                    \
-    0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf,                    \
-    0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876,                    \
-    0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367,                    \
-    0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab,                    \
-    0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c,                    \
-    0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04,                    \
-    0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43,                    \
-    0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282,                    \
-    0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e,                    \
-    0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2 }                   \
-}
-
-#define CAST_SK {                                                      \
-  { 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911,                    \
-    0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f,                    \
-    0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00,                    \
-    0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a,                    \
-    0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180,                    \
-    0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff,                    \
-    0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2,                    \
-    0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02,                    \
-    0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725,                    \
-    0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a,                    \
-    0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b,                    \
-    0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7,                    \
-    0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571,                    \
-    0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9,                    \
-    0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec,                    \
-    0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981,                    \
-    0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea,                    \
-    0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774,                    \
-    0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263,                    \
-    0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655,                    \
-    0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468,                    \
-    0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2,                    \
-    0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b,                    \
-    0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910,                    \
-    0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284,                    \
-    0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1,                    \
-    0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4,                    \
-    0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da,                    \
-    0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7,                    \
-    0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049,                    \
-    0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce,                    \
-    0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f,                    \
-    0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6,                    \
-    0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba,                    \
-    0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4,                    \
-    0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be,                    \
-    0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561,                    \
-    0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3,                    \
-    0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6,                    \
-    0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840,                    \
-    0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406,                    \
-    0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4,                    \
-    0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472,                    \
-    0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2,                    \
-    0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487,                    \
-    0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7,                    \
-    0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288,                    \
-    0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5,                    \
-    0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2,                    \
-    0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e,                    \
-    0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78,                    \
-    0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e,                    \
-    0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76,                    \
-    0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801,                    \
-    0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0,                    \
-    0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad,                    \
-    0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58,                    \
-    0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0,                    \
-    0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2,                    \
-    0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20,                    \
-    0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be,                    \
-    0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8,                    \
-    0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55,                    \
-    0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4 },                  \
-                                                                       \
-  { 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c,                    \
-    0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac,                    \
-    0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9,                    \
-    0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138,                    \
-    0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e,                    \
-    0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367,                    \
-    0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866,                    \
-    0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98,                    \
-    0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c,                    \
-    0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072,                    \
-    0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd,                    \
-    0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3,                    \
-    0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53,                    \
-    0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd,                    \
-    0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d,                    \
-    0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8,                    \
-    0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf,                    \
-    0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9,                    \
-    0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807,                    \
-    0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54,                    \
-    0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a,                    \
-    0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387,                    \
-    0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563,                    \
-    0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc,                    \
-    0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0,                    \
-    0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf,                    \
-    0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be,                    \
-    0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf,                    \
-    0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0,                    \
-    0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f,                    \
-    0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2,                    \
-    0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289,                    \
-    0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853,                    \
-    0x20951063, 0x4576698d, 0xb6fad407, 0x592af950,                    \
-    0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa,                    \
-    0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f,                    \
-    0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9,                    \
-    0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b,                    \
-    0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751,                    \
-    0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be,                    \
-    0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358,                    \
-    0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13,                    \
-    0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397,                    \
-    0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976,                    \
-    0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459,                    \
-    0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0,                    \
-    0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4,                    \
-    0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891,                    \
-    0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f,                    \
-    0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da,                    \
-    0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb,                    \
-    0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc,                    \
-    0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2,                    \
-    0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084,                    \
-    0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab,                    \
-    0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25,                    \
-    0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b,                    \
-    0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121,                    \
-    0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b,                    \
-    0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5,                    \
-    0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855,                    \
-    0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd,                    \
-    0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454,                    \
-    0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f },                  \
-                                                                       \
-  { 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693,                    \
-    0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f,                    \
-    0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82,                    \
-    0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de,                    \
-    0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd,                    \
-    0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43,                    \
-    0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f,                    \
-    0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19,                    \
-    0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9,                    \
-    0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2,                    \
-    0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e,                    \
-    0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516,                    \
-    0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83,                    \
-    0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88,                    \
-    0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e,                    \
-    0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816,                    \
-    0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a,                    \
-    0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756,                    \
-    0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f,                    \
-    0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a,                    \
-    0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b,                    \
-    0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264,                    \
-    0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78,                    \
-    0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688,                    \
-    0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d,                    \
-    0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28,                    \
-    0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802,                    \
-    0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3,                    \
-    0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9,                    \
-    0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7,                    \
-    0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302,                    \
-    0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06,                    \
-    0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858,                    \
-    0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033,                    \
-    0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a,                    \
-    0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a,                    \
-    0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4,                    \
-    0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566,                    \
-    0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df,                    \
-    0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509,                    \
-    0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9,                    \
-    0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962,                    \
-    0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c,                    \
-    0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e,                    \
-    0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07,                    \
-    0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c,                    \
-    0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939,                    \
-    0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c,                    \
-    0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e,                    \
-    0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285,                    \
-    0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378,                    \
-    0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301,                    \
-    0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd,                    \
-    0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be,                    \
-    0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567,                    \
-    0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767,                    \
-    0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2,                    \
-    0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647,                    \
-    0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf,                    \
-    0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914,                    \
-    0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2,                    \
-    0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c,                    \
-    0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada,                    \
-    0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3 },                  \
-                                                                       \
-  { 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095,                    \
-    0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5,                    \
-    0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174,                    \
-    0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc,                    \
-    0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940,                    \
-    0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd,                    \
-    0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42,                    \
-    0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d,                    \
-    0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164,                    \
-    0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2,                    \
-    0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4,                    \
-    0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862,                    \
-    0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0,                    \
-    0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc,                    \
-    0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6,                    \
-    0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c,                    \
-    0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491,                    \
-    0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e,                    \
-    0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b,                    \
-    0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039,                    \
-    0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8,                    \
-    0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8,                    \
-    0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006,                    \
-    0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42,                    \
-    0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564,                    \
-    0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5,                    \
-    0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab,                    \
-    0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472,                    \
-    0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc,                    \
-    0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225,                    \
-    0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8,                    \
-    0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c,                    \
-    0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441,                    \
-    0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb,                    \
-    0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f,                    \
-    0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054,                    \
-    0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504,                    \
-    0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70,                    \
-    0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c,                    \
-    0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc,                    \
-    0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6,                    \
-    0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c,                    \
-    0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd,                    \
-    0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3,                    \
-    0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4,                    \
-    0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4,                    \
-    0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc,                    \
-    0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101,                    \
-    0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba,                    \
-    0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f,                    \
-    0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf,                    \
-    0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e,                    \
-    0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603,                    \
-    0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a,                    \
-    0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37,                    \
-    0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c,                    \
-    0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819,                    \
-    0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384,                    \
-    0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d,                    \
-    0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c,                    \
-    0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347,                    \
-    0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82,                    \
-    0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d,                    \
-    0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e }                   \
-}
-
-/*----- That's all, folks -------------------------------------------------*/
-
-#ifdef __cplusplus
-  }
-#endif
-
-#endif
diff --git a/symm/des-base.c b/symm/des-base.c
deleted file mode 100644 (file)
index 4d55881..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*-c-*-
- *
- * Common features for DES implementation
- *
- * (c) 1999 Straylight/Edgeware
- */
-
-/*----- Licensing notice --------------------------------------------------*
- *
- * This file is part of Catacomb.
- *
- * Catacomb is free software; you can redistribute it and/or modify
- * 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.
- */
-
-/*----- Header files ------------------------------------------------------*/
-
-#include <mLib/bits.h>
-
-#include "des-base.h"
-#include "des-tab.h"
-
-/*----- Global variables --------------------------------------------------*/
-
-const uint32 des_sp[8][64] = DES_SP;
-
-/*----- That's all, folks -------------------------------------------------*/
index 5dc8c4a..7dad026 100644 (file)
@@ -246,33 +246,24 @@ int main(void)
  * DES tables [generated]\n\
  */\n\
 \n\
  * DES tables [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_DES_TAB_H\n\
-#define CATACOMB_DES_TAB_H\n\
+#include \"des-base.h\"\n\
 \n\
 \n\
-#define DES_SP {                                                       \\\n\
+const uint32 des_sp[8][64] = {\n\
 ", stdout);
   for (i = 0; i < 8; i++) {
     mangle(s[i], ss, 28 - 4 * i);
 ", stdout);
   for (i = 0; i < 8; i++) {
     mangle(s[i], ss, 28 - 4 * i);
-    printf("\
-                                                                       \\\n\
-  /* --- SP[%i] --- */                                                 \\\n\
-                                                                       \\\n\
-", i);
+    printf("\n  /* --- SP[%i] --- */\n\n", i);
     sep = "  { ";
     for (j = 0; j < 64; j++) {
       printf("%s0x%08lx", sep, ss[j]);
       if (j % 4 == 3)
     sep = "  { ";
     for (j = 0; j < 64; j++) {
       printf("%s0x%08lx", sep, ss[j]);
       if (j % 4 == 3)
-       sep = ",                        \\\n    ";
+       sep = ",\n    ";
       else
        sep = ", ";
     }
       else
        sep = ", ";
     }
-    printf(" }%s                       \\\n", i == 7 ? "" : ",");
+    printf(" }%s\n", i == 7 ? "" : ",");
   }
   }
-  fputs("\
-}\n\
-\n\
-#endif\n\
-", stdout);
+  fputs("};\n", stdout);
 
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
 
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
diff --git a/symm/desx-tab.c b/symm/desx-tab.c
new file mode 100644 (file)
index 0000000..30ea9a2
--- /dev/null
@@ -0,0 +1,67 @@
+/* -*-c-*-
+ *
+ * Tables for DESX
+ *
+ * (c) 2001 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------*
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * 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.
+ */
+
+#include <mLib/bits.h>
+
+/*----- S-box table -------------------------------------------------------*/
+
+const octet desx_s[256] = {
+  0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a,
+  0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,
+  0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b,
+  0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,
+  0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda,
+  0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,
+  0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8,
+  0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,
+  0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17,
+  0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,
+  0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72,
+  0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,
+  0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd,
+  0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,
+  0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b,
+  0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,
+  0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77,
+  0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,
+  0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3,
+  0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,
+  0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e,
+  0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,
+  0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d,
+  0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,
+  0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46,
+  0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,
+  0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97,
+  0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,
+  0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef,
+  0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,
+  0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf,
+  0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab,
+};
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/symm/desx-tab.h b/symm/desx-tab.h
deleted file mode 100644 (file)
index f1b54d4..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*-c-*-
- *
- * Tables for DESX
- *
- * (c) 2001 Straylight/Edgeware
- */
-
-/*----- Licensing notice --------------------------------------------------*
- *
- * This file is part of Catacomb.
- *
- * Catacomb is free software; you can redistribute it and/or modify
- * 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.
- */
-
-#ifndef CATACOMB_DESX_TAB_H
-#define CATACOMB_DESX_TAB_H
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-
-/*----- S-box table -------------------------------------------------------*/
-
-#define DESX_S {                                                       \
-  0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a,                      \
-  0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,                      \
-  0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b,                      \
-  0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,                      \
-  0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda,                      \
-  0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,                      \
-  0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8,                      \
-  0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,                      \
-  0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17,                      \
-  0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,                      \
-  0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72,                      \
-  0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,                      \
-  0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd,                      \
-  0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,                      \
-  0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b,                      \
-  0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,                      \
-  0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77,                      \
-  0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,                      \
-  0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3,                      \
-  0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,                      \
-  0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e,                      \
-  0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,                      \
-  0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d,                      \
-  0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,                      \
-  0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46,                      \
-  0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,                      \
-  0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97,                      \
-  0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,                      \
-  0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef,                      \
-  0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,                      \
-  0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf,                      \
-  0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab,                      \
-}
-
-/*----- That's all, folks -------------------------------------------------*/
-
-#ifdef __cplusplus
-  }
-#endif
-
-#endif
index d65ffa7..e9a77ed 100644 (file)
 #include "des-base.h"
 #include "des.h"
 #include "desx.h"
 #include "des-base.h"
 #include "des.h"
 #include "desx.h"
-#include "desx-tab.h"
 #include "gcipher.h"
 
 /*----- Tables ------------------------------------------------------------*/
 
 #include "gcipher.h"
 
 /*----- Tables ------------------------------------------------------------*/
 
-static const octet s[256] = DESX_S;
+extern const octet desx_s[256];
 
 /*----- Global variables --------------------------------------------------*/
 
 
 /*----- Global variables --------------------------------------------------*/
 
@@ -71,7 +70,7 @@ static void mangle(octet *b, const octet *p)
   unsigned i;
 
   for (i = 0; i < 8; i++)
   unsigned i;
 
   for (i = 0; i < 8; i++)
-    b[i] = *p++ ^ s[b[i] ^ b[(i + 1) & 7u]];
+    b[i] = *p++ ^ desx_s[b[i] ^ b[(i + 1) & 7u]];
 }
 
 void desx_init(desx_ctx *k, const void *buf, size_t sz)
 }
 
 void desx_init(desx_ctx *k, const void *buf, size_t sz)
index 750f727..d43f7c0 100644 (file)
@@ -283,27 +283,24 @@ int main(void)
  * MARS tables [generated]\n\
  */\n\
 \n\
  * MARS tables [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_MARS_TAB_H\n\
-#define CATACOMB_MARS_TAB_H\n\
+#include <mLib/bits.h>\n\
 ");
 
   fputs("\
 /* --- The S-box --- */\n\
 \n\
 ");
 
   fputs("\
 /* --- The S-box --- */\n\
 \n\
-#define MARS_S {                                                       \\\n\
+const uint32 mars_s[] = {\n\
   ", stdout);
   for (i = 0; i < 512; i++) {
     printf("0x%08lx", (unsigned long)s[i]);
     if (i == 511)
   ", stdout);
   for (i = 0; i < 512; i++) {
     printf("0x%08lx", (unsigned long)s[i]);
     if (i == 511)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n", stdout);
     else if (i % 4 == 3)
     else if (i % 4 == 3)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
     else
       fputs(", ", stdout);
   }
 
-  puts("#endif");
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index 6f73b42..4c7b302 100644 (file)
@@ -35,7 +35,6 @@
 #include "blkc.h"
 #include "gcipher.h"
 #include "mars.h"
 #include "blkc.h"
 #include "gcipher.h"
 #include "mars.h"
-#include "mars-tab.h"
 #include "paranoia.h"
 
 /*----- Global variables --------------------------------------------------*/
 #include "paranoia.h"
 
 /*----- Global variables --------------------------------------------------*/
@@ -44,10 +43,10 @@ const octet mars_keysz[] = { KSZ_RANGE, MARS_KEYSZ, 0, 56, 4 };
 
 /*----- Useful tables -----------------------------------------------------*/
 
 
 /*----- Useful tables -----------------------------------------------------*/
 
-static const uint32 s[512] = MARS_S;
-#define s0 (s +          0)
-#define s1 (s + 256)
-#define bb (s + 265)
+extern const uint32 mars_s[512];
+#define s0 (mars_s +   0)
+#define s1 (mars_s + 256)
+#define bb (mars_s + 265)
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -100,7 +99,7 @@ void mars_init(mars_ctx *k, const void *buf, size_t sz)
     x = t[14];
     for (ii = 0; ii < 4; ii++) {
       for (i = 0; i < 15; i++) {
     x = t[14];
     for (ii = 0; ii < 4; ii++) {
       for (i = 0; i < 15; i++) {
-       x = t[i] + s[x & 511u];
+       x = t[i] + mars_s[x & 511u];
        t[i] = x = ROL32(x, 9);
       }
     }
        t[i] = x = ROL32(x, 9);
       }
     }
@@ -171,7 +170,7 @@ void mars_init(mars_ctx *k, const void *buf, size_t sz)
   uint32 kx = *k++, ky = *k++;                                         \
   y = a + kx;                                                          \
   a = ROL32(a, 13); z = a * ky; z = ROL32(z, 5);                       \
   uint32 kx = *k++, ky = *k++;                                         \
   y = a + kx;                                                          \
   a = ROL32(a, 13); z = a * ky; z = ROL32(z, 5);                       \
-  x = s[y & 511u] ^ z; y = ROL32(y, z);                                        \
+  x = mars_s[y & 511u] ^ z; y = ROL32(y, z);                           \
   z = ROL32(z, 5); x ^= z; x = ROL32(x, z);                            \
 } while (0)
 
   z = ROL32(z, 5); x ^= z; x = ROL32(x, z);                            \
 } while (0)
 
@@ -179,7 +178,7 @@ void mars_init(mars_ctx *k, const void *buf, size_t sz)
   uint32 ky = *--k, kx = *--k;                                         \
   z = a * ky;                                                          \
   a = ROR32(a, 13); y = a + kx; z = ROL32(z, 5);                       \
   uint32 ky = *--k, kx = *--k;                                         \
   z = a * ky;                                                          \
   a = ROR32(a, 13); y = a + kx; z = ROL32(z, 5);                       \
-  x = s[y & 511u] ^ z; y = ROL32(y, z);                                        \
+  x = mars_s[y & 511u] ^ z; y = ROL32(y, z);                           \
   z = ROL32(z, 5); x ^= z; x = ROL32(x, z);                            \
 } while (0)
 
   z = ROL32(z, 5); x ^= z; x = ROL32(x, z);                            \
 } while (0)
 
diff --git a/symm/md2-tab.c b/symm/md2-tab.c
new file mode 100644 (file)
index 0000000..b692f3d
--- /dev/null
@@ -0,0 +1,67 @@
+/* -*-c-*-
+ *
+ * Tables for MD2
+ *
+ * (c) 2001 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------*
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * 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.
+ */
+
+#include <mLib/bits.h>
+
+/*----- S-box table -------------------------------------------------------*/
+
+const octet md2_s[256] = {
+  0x29, 0x2e, 0x43, 0xc9, 0xa2, 0xd8, 0x7c, 0x01,
+  0x3d, 0x36, 0x54, 0xa1, 0xec, 0xf0, 0x06, 0x13,
+  0x62, 0xa7, 0x05, 0xf3, 0xc0, 0xc7, 0x73, 0x8c,
+  0x98, 0x93, 0x2b, 0xd9, 0xbc, 0x4c, 0x82, 0xca,
+  0x1e, 0x9b, 0x57, 0x3c, 0xfd, 0xd4, 0xe0, 0x16,
+  0x67, 0x42, 0x6f, 0x18, 0x8a, 0x17, 0xe5, 0x12,
+  0xbe, 0x4e, 0xc4, 0xd6, 0xda, 0x9e, 0xde, 0x49,
+  0xa0, 0xfb, 0xf5, 0x8e, 0xbb, 0x2f, 0xee, 0x7a,
+  0xa9, 0x68, 0x79, 0x91, 0x15, 0xb2, 0x07, 0x3f,
+  0x94, 0xc2, 0x10, 0x89, 0x0b, 0x22, 0x5f, 0x21,
+  0x80, 0x7f, 0x5d, 0x9a, 0x5a, 0x90, 0x32, 0x27,
+  0x35, 0x3e, 0xcc, 0xe7, 0xbf, 0xf7, 0x97, 0x03,
+  0xff, 0x19, 0x30, 0xb3, 0x48, 0xa5, 0xb5, 0xd1,
+  0xd7, 0x5e, 0x92, 0x2a, 0xac, 0x56, 0xaa, 0xc6,
+  0x4f, 0xb8, 0x38, 0xd2, 0x96, 0xa4, 0x7d, 0xb6,
+  0x76, 0xfc, 0x6b, 0xe2, 0x9c, 0x74, 0x04, 0xf1,
+  0x45, 0x9d, 0x70, 0x59, 0x64, 0x71, 0x87, 0x20,
+  0x86, 0x5b, 0xcf, 0x65, 0xe6, 0x2d, 0xa8, 0x02,
+  0x1b, 0x60, 0x25, 0xad, 0xae, 0xb0, 0xb9, 0xf6,
+  0x1c, 0x46, 0x61, 0x69, 0x34, 0x40, 0x7e, 0x0f,
+  0x55, 0x47, 0xa3, 0x23, 0xdd, 0x51, 0xaf, 0x3a,
+  0xc3, 0x5c, 0xf9, 0xce, 0xba, 0xc5, 0xea, 0x26,
+  0x2c, 0x53, 0x0d, 0x6e, 0x85, 0x28, 0x84, 0x09,
+  0xd3, 0xdf, 0xcd, 0xf4, 0x41, 0x81, 0x4d, 0x52,
+  0x6a, 0xdc, 0x37, 0xc8, 0x6c, 0xc1, 0xab, 0xfa,
+  0x24, 0xe1, 0x7b, 0x08, 0x0c, 0xbd, 0xb1, 0x4a,
+  0x78, 0x88, 0x95, 0x8b, 0xe3, 0x63, 0xe8, 0x6d,
+  0xe9, 0xcb, 0xd5, 0xfe, 0x3b, 0x00, 0x1d, 0x39,
+  0xf2, 0xef, 0xb7, 0x0e, 0x66, 0x58, 0xd0, 0xe4,
+  0xa6, 0x77, 0x72, 0xf8, 0xeb, 0x75, 0x4b, 0x0a,
+  0x31, 0x44, 0x50, 0xb4, 0x8f, 0xed, 0x1f, 0x1a,
+  0xdb, 0x99, 0x8d, 0x33, 0x9f, 0x11, 0x83, 0x14
+};
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/symm/md2-tab.h b/symm/md2-tab.h
deleted file mode 100644 (file)
index 3e1b2e9..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*-c-*-
- *
- * Tables for MD2
- *
- * (c) 2001 Straylight/Edgeware
- */
-
-/*----- Licensing notice --------------------------------------------------*
- *
- * This file is part of Catacomb.
- *
- * Catacomb is free software; you can redistribute it and/or modify
- * 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.
- */
-
-#ifndef CATACOMB_MD2_TAB_H
-#define CATACOMB_MD2_TAB_H
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-
-/*----- S-box table -------------------------------------------------------*/
-
-#define MD2_S {                                                                \
-  0x29, 0x2e, 0x43, 0xc9, 0xa2, 0xd8, 0x7c, 0x01,                      \
-  0x3d, 0x36, 0x54, 0xa1, 0xec, 0xf0, 0x06, 0x13,                      \
-  0x62, 0xa7, 0x05, 0xf3, 0xc0, 0xc7, 0x73, 0x8c,                      \
-  0x98, 0x93, 0x2b, 0xd9, 0xbc, 0x4c, 0x82, 0xca,                      \
-  0x1e, 0x9b, 0x57, 0x3c, 0xfd, 0xd4, 0xe0, 0x16,                      \
-  0x67, 0x42, 0x6f, 0x18, 0x8a, 0x17, 0xe5, 0x12,                      \
-  0xbe, 0x4e, 0xc4, 0xd6, 0xda, 0x9e, 0xde, 0x49,                      \
-  0xa0, 0xfb, 0xf5, 0x8e, 0xbb, 0x2f, 0xee, 0x7a,                      \
-  0xa9, 0x68, 0x79, 0x91, 0x15, 0xb2, 0x07, 0x3f,                      \
-  0x94, 0xc2, 0x10, 0x89, 0x0b, 0x22, 0x5f, 0x21,                      \
-  0x80, 0x7f, 0x5d, 0x9a, 0x5a, 0x90, 0x32, 0x27,                      \
-  0x35, 0x3e, 0xcc, 0xe7, 0xbf, 0xf7, 0x97, 0x03,                      \
-  0xff, 0x19, 0x30, 0xb3, 0x48, 0xa5, 0xb5, 0xd1,                      \
-  0xd7, 0x5e, 0x92, 0x2a, 0xac, 0x56, 0xaa, 0xc6,                      \
-  0x4f, 0xb8, 0x38, 0xd2, 0x96, 0xa4, 0x7d, 0xb6,                      \
-  0x76, 0xfc, 0x6b, 0xe2, 0x9c, 0x74, 0x04, 0xf1,                      \
-  0x45, 0x9d, 0x70, 0x59, 0x64, 0x71, 0x87, 0x20,                      \
-  0x86, 0x5b, 0xcf, 0x65, 0xe6, 0x2d, 0xa8, 0x02,                      \
-  0x1b, 0x60, 0x25, 0xad, 0xae, 0xb0, 0xb9, 0xf6,                      \
-  0x1c, 0x46, 0x61, 0x69, 0x34, 0x40, 0x7e, 0x0f,                      \
-  0x55, 0x47, 0xa3, 0x23, 0xdd, 0x51, 0xaf, 0x3a,                      \
-  0xc3, 0x5c, 0xf9, 0xce, 0xba, 0xc5, 0xea, 0x26,                      \
-  0x2c, 0x53, 0x0d, 0x6e, 0x85, 0x28, 0x84, 0x09,                      \
-  0xd3, 0xdf, 0xcd, 0xf4, 0x41, 0x81, 0x4d, 0x52,                      \
-  0x6a, 0xdc, 0x37, 0xc8, 0x6c, 0xc1, 0xab, 0xfa,                      \
-  0x24, 0xe1, 0x7b, 0x08, 0x0c, 0xbd, 0xb1, 0x4a,                      \
-  0x78, 0x88, 0x95, 0x8b, 0xe3, 0x63, 0xe8, 0x6d,                      \
-  0xe9, 0xcb, 0xd5, 0xfe, 0x3b, 0x00, 0x1d, 0x39,                      \
-  0xf2, 0xef, 0xb7, 0x0e, 0x66, 0x58, 0xd0, 0xe4,                      \
-  0xa6, 0x77, 0x72, 0xf8, 0xeb, 0x75, 0x4b, 0x0a,                      \
-  0x31, 0x44, 0x50, 0xb4, 0x8f, 0xed, 0x1f, 0x1a,                      \
-  0xdb, 0x99, 0x8d, 0x33, 0x9f, 0x11, 0x83, 0x14                       \
-}
-
-/*----- That's all, folks -------------------------------------------------*/
-
-#ifdef __cplusplus
-  }
-#endif
-
-#endif
index 180bc65..79bc472 100644 (file)
 #include "ghash-def.h"
 #include "hash.h"
 #include "md2.h"
 #include "ghash-def.h"
 #include "hash.h"
 #include "md2.h"
-#include "md2-tab.h"
 
 /*----- Tables ------------------------------------------------------------*/
 
 
 /*----- Tables ------------------------------------------------------------*/
 
-static const octet s[256] = MD2_S;
+extern const octet md2_s[256];
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -76,7 +75,7 @@ void md2_compress(md2_ctx *ctx, const void *sbuf)
 
   t = 0;
   for (i = 0; i < 18; i++) {
 
   t = 0;
   for (i = 0; i < 18; i++) {
-#define X(z, i) t = z[i] ^= s[t];
+#define X(z, i) t = z[i] ^= md2_s[t];
     DO(X, ctx->h);
     DO(X, x);
     DO(X, y);
     DO(X, ctx->h);
     DO(X, x);
     DO(X, y);
@@ -87,7 +86,7 @@ void md2_compress(md2_ctx *ctx, const void *sbuf)
   /* --- Now compute the checksum --- */
 
   t = ctx->c[MD2_BUFSZ - 1];
   /* --- Now compute the checksum --- */
 
   t = ctx->c[MD2_BUFSZ - 1];
-#define X(z, i) t = ctx->c[i] ^= s[z[i] ^ t]
+#define X(z, i) t = ctx->c[i] ^= md2_s[z[i] ^ t]
   DO(X, ((const octet *)sbuf));
 #undef X
 
   DO(X, ((const octet *)sbuf));
 #undef X
 
diff --git a/symm/rc2-tab.c b/symm/rc2-tab.c
new file mode 100644 (file)
index 0000000..e0ec03b
--- /dev/null
@@ -0,0 +1,67 @@
+/* -*-c-*-
+ *
+ * Substitution table for RC2
+ *
+ * (c) 2001 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------*
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * 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.
+ */
+
+#include <mLib/bits.h>
+
+/*----- S-box table -------------------------------------------------------*/
+
+const octet rc2_pi[256] = {
+  0xd9,        0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed,
+  0x28,        0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,
+  0xc6,        0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e,
+  0x62,        0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,
+  0x17,        0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13,
+  0x61,        0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,
+  0xbd,        0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b,
+  0xf0,        0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,
+  0x54,        0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c,
+  0x73,        0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,
+  0x12,        0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1,
+  0x42,        0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,
+  0x6f,        0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57,
+  0x27,        0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,
+  0xf8,        0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7,
+  0x06,        0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,
+  0x08,        0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7,
+  0x84,        0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,
+  0x96,        0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74,
+  0x4b,        0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,
+  0xc2,        0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc,
+  0x24,        0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,
+  0x99,        0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a,
+  0xfc,        0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,
+  0x2d,        0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae,
+  0x05,        0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,
+  0xd3,        0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c,
+  0x63,        0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,
+  0x0d,        0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0,
+  0xbb,        0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,
+  0xc5,        0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77,
+  0x0a,        0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad
+};
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/symm/rc2-tab.h b/symm/rc2-tab.h
deleted file mode 100644 (file)
index 48b46e0..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*-c-*-
- *
- * Substitution table for RC2
- *
- * (c) 2001 Straylight/Edgeware
- */
-
-/*----- Licensing notice --------------------------------------------------*
- *
- * This file is part of Catacomb.
- *
- * Catacomb is free software; you can redistribute it and/or modify
- * 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.
- */
-
-#ifndef CATACOMB_RC2_TAB_H
-#define CATACOMB_RC2_TAB_H
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-
-/*----- S-box table -------------------------------------------------------*/
-
-#define RC2_PI {                                                       \
-  0xd9,        0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed,                       \
-  0x28,        0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,                       \
-  0xc6,        0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e,                       \
-  0x62,        0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,                       \
-  0x17,        0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13,                       \
-  0x61,        0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,                       \
-  0xbd,        0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b,                       \
-  0xf0,        0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,                       \
-  0x54,        0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c,                       \
-  0x73,        0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,                       \
-  0x12,        0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1,                       \
-  0x42,        0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,                       \
-  0x6f,        0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57,                       \
-  0x27,        0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,                       \
-  0xf8,        0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7,                       \
-  0x06,        0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,                       \
-  0x08,        0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7,                       \
-  0x84,        0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,                       \
-  0x96,        0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74,                       \
-  0x4b,        0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,                       \
-  0xc2,        0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc,                       \
-  0x24,        0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,                       \
-  0x99,        0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a,                       \
-  0xfc,        0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,                       \
-  0x2d,        0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae,                       \
-  0x05,        0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,                       \
-  0xd3,        0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c,                       \
-  0x63,        0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,                       \
-  0x0d,        0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0,                       \
-  0xbb,        0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,                       \
-  0xc5,        0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77,                       \
-  0x0a,        0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad                        \
-}
-
-/*----- That's all, folks -------------------------------------------------*/
-
-#ifdef __cplusplus
-  }
-#endif
-
-#endif
index 4ea85b6..df59425 100644 (file)
@@ -36,7 +36,6 @@
 #include "gcipher.h"
 #include "paranoia.h"
 #include "rc2.h"
 #include "gcipher.h"
 #include "paranoia.h"
 #include "rc2.h"
-#include "rc2-tab.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 
 /*----- Global variables --------------------------------------------------*/
 
@@ -44,7 +43,7 @@ const octet rc2_keysz[] = { KSZ_RANGE, RC2_KEYSZ, 1, 128, 1 };
 
 /*----- Important tables --------------------------------------------------*/
 
 
 /*----- Important tables --------------------------------------------------*/
 
-static const octet pi[256] = RC2_PI;
+extern const octet rc2_pi[256];
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -85,15 +84,15 @@ void rc2_braindamage(rc2_ctx *k, const void *buf, size_t sz, unsigned eb)
   memcpy(l, buf, sz);
 
   for (i = sz; i < sizeof(l); i++)
   memcpy(l, buf, sz);
 
   for (i = sz; i < sizeof(l); i++)
-    l[i] = pi[U8(l[i - 1] + l[i - sz])];
+    l[i] = rc2_pi[U8(l[i - 1] + l[i - sz])];
 
   /* --- Braindamage the key --- */
 
   i = sizeof(l) - t8;
 
   /* --- Braindamage the key --- */
 
   i = sizeof(l) - t8;
-  l[i] = pi[l[i] & tm];
+  l[i] = rc2_pi[l[i] & tm];
   while (i) {
     i--;
   while (i) {
     i--;
-    l[i] = pi[U8(l[i + 1] ^ l[i + t8])];
+    l[i] = rc2_pi[U8(l[i + 1] ^ l[i + t8])];
   }
 
   /* --- Write it to the key block --- */
   }
 
   /* --- Write it to the key block --- */
index d3ec0d6..bfab63a 100644 (file)
 #include "gcipher.h"
 #include "rijndael.h"
 #include "rijndael-base.h"
 #include "gcipher.h"
 #include "rijndael.h"
 #include "rijndael-base.h"
-#include "rijndael-tab.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 const octet rijndael_keysz[] = { KSZ_RANGE, RIJNDAEL_KEYSZ, 4, 32, 4 };
 
 
 /*----- Global variables --------------------------------------------------*/
 
 const octet rijndael_keysz[] = { KSZ_RANGE, RIJNDAEL_KEYSZ, 4, 32, 4 };
 
-/*----- Constant tables ---------------------------------------------------*/
-
-const octet rijndael_s[256] = RIJNDAEL_S;
-const octet rijndael_si[256] = RIJNDAEL_SI;
-const uint32 rijndael_t[4][256] = RIJNDAEL_T;
-const uint32 rijndael_ti[4][256] = RIJNDAEL_TI;
-const uint32 rijndael_u[4][256] = RIJNDAEL_U;
-const octet rijndael_rcon[] = RIJNDAEL_RCON;
-
 /*----- Main code ---------------------------------------------------------*/
 
 /* --- @rijndael_setup@ --- *
 /*----- Main code ---------------------------------------------------------*/
 
 /* --- @rijndael_setup@ --- *
index 4260de6..91007cc 100644 (file)
@@ -230,8 +230,7 @@ int main(void)
  * Rijndael tables [generated]\n\
  */\n\
 \n\
  * Rijndael tables [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_RIJNDAEL_TAB_H\n\
-#define CATACOMB_RIJNDAEL_TAB_H\n\
+#include \"rijndael-base.h\"\n\
 ");
 
   /* --- Write out the S-box --- */
 ");
 
   /* --- Write out the S-box --- */
@@ -240,27 +239,27 @@ int main(void)
   fputs("\
 /* --- The byte substitution and its inverse --- */\n\
 \n\
   fputs("\
 /* --- The byte substitution and its inverse --- */\n\
 \n\
-#define RIJNDAEL_S {                                                   \\\n\
+const octet rijndael_s[256] = {\n\
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", s[i]);
     if (i == 255)
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", s[i]);
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
   fputs("\
     else
       fputs(", ", stdout);
   }
 
   fputs("\
-#define RIJNDAEL_SI {                                                  \\\n\
+const octet rijndael_si[256] = {\n\
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", si[i]);
     if (i == 255)
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", si[i]);
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -271,40 +270,36 @@ int main(void)
   fputs("\
 /* --- The big round tables --- */\n\
 \n\
   fputs("\
 /* --- The big round tables --- */\n\
 \n\
-#define RIJNDAEL_T {                                                   \\\n\
+const uint32 rijndael_t[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", (unsigned long)t[j][i]);
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", (unsigned long)t[j][i]);
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
   }
 
   fputs("\
       else
        fputs(", ", stdout);
     }
   }
 
   fputs("\
-#define RIJNDAEL_TI {                                                  \\\n\
+const uint32 rijndael_ti[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", (unsigned long)ti[j][i]);
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", (unsigned long)ti[j][i]);
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
       else
        fputs(", ", stdout);
     }
@@ -316,20 +311,18 @@ int main(void)
   fputs("\
 /* --- The decryption key schedule tables --- */\n\
 \n\
   fputs("\
 /* --- The decryption key schedule tables --- */\n\
 \n\
-#define RIJNDAEL_U {                                                   \\\n\
+const uint32 rijndael_u[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", (unsigned long)u[j][i]);
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", (unsigned long)u[j][i]);
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
       else
        fputs(", ", stdout);
     }
@@ -341,22 +334,20 @@ int main(void)
   fputs("\
 /* --- The round constants --- */\n\
 \n\
   fputs("\
 /* --- The round constants --- */\n\
 \n\
-#define RIJNDAEL_RCON {                                                        \\\n\
+const octet rijndael_rcon[32] = {\n\
   ", stdout);
   for (i = 0; i < sizeof(rc); i++) {
     printf("0x%02x", rc[i]);
     if (i == sizeof(rc) - 1)
   ", stdout);
   for (i = 0; i < sizeof(rc); i++) {
     printf("0x%02x", rc[i]);
     if (i == sizeof(rc) - 1)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n", stdout);
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
   /* --- Done --- */
 
     else
       fputs(", ", stdout);
   }
 
   /* --- Done --- */
 
-  puts("#endif");
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index d9ae784..11e9b9d 100644 (file)
@@ -56,41 +56,38 @@ int main(void)
  * SAFER tables [generated]\n\
  */\n\
 \n\
  * SAFER tables [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_SAFER_TAB_H\n\
-#define CATACOMB_SAFER_TAB_H\n\
+#include <mLib/bits.h>\n\
 \n\
 ", stdout);
 
   fputs("\
 /* --- S-boxes --- */\n\
 \n\
 \n\
 ", stdout);
 
   fputs("\
 /* --- S-boxes --- */\n\
 \n\
-#define SAFER_S {                                                      \\\n\
+const octet safer_s[256] = {\n\
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", s[i]);
     if (i == 255)
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", s[i]);
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if ((i + 1)%8 == 0)
     else if ((i + 1)%8 == 0)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
   fputs("\
     else
       fputs(", ", stdout);
   }
 
   fputs("\
-#define SAFER_SI {                                                     \\\n\
+const octet safer_si[256] = {\n\
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", si[i]);
     if (i == 255)
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", si[i]);
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n", stdout);
     else if ((i + 1)%8 == 0)
     else if ((i + 1)%8 == 0)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
     else
       fputs(", ", stdout);
   }
 
-  puts("#endif");
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index 055a5f6..8dd31cb 100644 (file)
@@ -36,7 +36,6 @@
 #include "gcipher.h"
 #include "paranoia.h"
 #include "safer.h"
 #include "gcipher.h"
 #include "paranoia.h"
 #include "safer.h"
-#include "safer-tab.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 
 /*----- Global variables --------------------------------------------------*/
 
@@ -44,7 +43,9 @@ const octet safer_keysz[] = { KSZ_SET, 8, 16, 0 };
 
 /*----- Important tables --------------------------------------------------*/
 
 
 /*----- Important tables --------------------------------------------------*/
 
-static const octet s[265] = SAFER_S, si[256] = SAFER_SI;
+extern const octet safer_s[256], safer_si[256];
+#define S safer_s
+#define SI safer_si
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -91,7 +92,7 @@ static void next(struct ksched *t, octet *k)
     memcpy(k, t->x, 8);
     if (t->i > 1) {
       for (i = 0; i < 8; i++)
     memcpy(k, t->x, 8);
     if (t->i > 1) {
       for (i = 0; i < 8; i++)
-       k[i] += s[s[U8(9*t->i + i + 1)]];
+       k[i] += S[S[U8(9*t->i + i + 1)]];
     }
   }
   for (i = 0; i < 8; i++)
     }
   }
   for (i = 0; i < 8; i++)
@@ -112,7 +113,7 @@ static void next_sk(struct ksched *t, octet *k)
     }
     if (t->i > 1) {
       for (i = 0; i < 8; i++)
     }
     if (t->i > 1) {
       for (i = 0; i < 8; i++)
-       k[i] += s[s[U8(9*t->i + i + 1)]];
+       k[i] += S[S[U8(9*t->i + i + 1)]];
     }
   }
   for (i = 0; i < 9; i++)
     }
   }
   for (i = 0; i < 9; i++)
@@ -216,8 +217,8 @@ void safersk_init(safer_ctx *k, const void *buf, size_t sz)
   e ^= *k++; f += *k++; g += *k++; h ^= *k++;                          \
 } while (0)
 #define SUB(a, b, c, d, e, f, g, h) do {                               \
   e ^= *k++; f += *k++; g += *k++; h ^= *k++;                          \
 } while (0)
 #define SUB(a, b, c, d, e, f, g, h) do {                               \
-  a = s[U8(a)]; b = si[U8(b)]; c = si[U8(c)]; d = s[U8(d)];            \
-  e = s[U8(e)]; f = si[U8(f)]; g = si[U8(g)]; h = s[U8(h)];            \
+  a = S[U8(a)]; b = SI[U8(b)]; c = SI[U8(c)]; d = S[U8(d)];            \
+  e = S[U8(e)]; f = SI[U8(f)]; g = SI[U8(g)]; h = S[U8(h)];            \
 } while (0)
 #define KAX(k, a, b, c, d, e, f, g, h) do {                            \
   a += *k++; b ^= *k++; c ^= *k++; d += *k++;                          \
 } while (0)
 #define KAX(k, a, b, c, d, e, f, g, h) do {                            \
   a += *k++; b ^= *k++; c ^= *k++; d += *k++;                          \
@@ -229,8 +230,8 @@ void safersk_init(safer_ctx *k, const void *buf, size_t sz)
   d ^= *--k; c -= *--k; b -= *--k; a ^= *--k;                          \
 } while (0)
 #define ISUB(a, b, c, d, e, f, g, h) do {                              \
   d ^= *--k; c -= *--k; b -= *--k; a ^= *--k;                          \
 } while (0)
 #define ISUB(a, b, c, d, e, f, g, h) do {                              \
-  a = si[U8(a)]; b = s[U8(b)]; c = s[U8(c)]; d = si[U8(d)];            \
-  e = si[U8(e)]; f = s[U8(f)]; g = s[U8(g)]; h = si[U8(h)];            \
+  a = SI[U8(a)]; b = S[U8(b)]; c = S[U8(c)]; d = SI[U8(d)];            \
+  e = SI[U8(e)]; f = S[U8(f)]; g = S[U8(g)]; h = SI[U8(h)];            \
 } while (0)
 #define KSX(k, a, b, c, d, e, f, g, h) do {                            \
   h -= *--k; g ^= *--k; f ^= *--k; e -= *--k;                          \
 } while (0)
 #define KSX(k, a, b, c, d, e, f, g, h) do {                            \
   h -= *--k; g ^= *--k; f ^= *--k; e -= *--k;                          \
index e665410..c9041ee 100644 (file)
@@ -11,4 +11,3 @@
 const char *safersk_magic = "Compile this useless file";
 
 BLKC_TEST(SAFERSK, safersk)
 const char *safersk_magic = "Compile this useless file";
 
 BLKC_TEST(SAFERSK, safersk)
-
diff --git a/symm/skipjack-tab.c b/symm/skipjack-tab.c
new file mode 100644 (file)
index 0000000..345a67a
--- /dev/null
@@ -0,0 +1,67 @@
+/* -*-c-*-
+ *
+ * The Skipjack S-box
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------*
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * 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.
+ */
+
+#include <mLib/bits.h>
+
+/*----- The S-box ---------------------------------------------------------*/
+
+const octet skipjack_s[256] = {
+  0xa3, 0xd7, 0x09, 0x83, 0xf8, 0x48, 0xf6, 0xf4,
+  0xb3, 0x21, 0x15, 0x78, 0x99, 0xb1, 0xaf, 0xf9,
+  0xe7, 0x2d, 0x4d, 0x8a, 0xce, 0x4c, 0xca, 0x2e,
+  0x52, 0x95, 0xd9, 0x1e, 0x4e, 0x38, 0x44, 0x28,
+  0x0a, 0xdf, 0x02, 0xa0, 0x17, 0xf1, 0x60, 0x68,
+  0x12, 0xb7, 0x7a, 0xc3, 0xe9, 0xfa, 0x3d, 0x53,
+  0x96, 0x84, 0x6b, 0xba, 0xf2, 0x63, 0x9a, 0x19,
+  0x7c, 0xae, 0xe5, 0xf5, 0xf7, 0x16, 0x6a, 0xa2,
+  0x39, 0xb6, 0x7b, 0x0f, 0xc1, 0x93, 0x81, 0x1b,
+  0xee, 0xb4, 0x1a, 0xea, 0xd0, 0x91, 0x2f, 0xb8,
+  0x55, 0xb9, 0xda, 0x85, 0x3f, 0x41, 0xbf, 0xe0,
+  0x5a, 0x58, 0x80, 0x5f, 0x66, 0x0b, 0xd8, 0x90,
+  0x35, 0xd5, 0xc0, 0xa7, 0x33, 0x06, 0x65, 0x69,
+  0x45, 0x00, 0x94, 0x56, 0x6d, 0x98, 0x9b, 0x76,
+  0x97, 0xfc, 0xb2, 0xc2, 0xb0, 0xfe, 0xdb, 0x20,
+  0xe1, 0xeb, 0xd6, 0xe4, 0xdd, 0x47, 0x4a, 0x1d,
+  0x42, 0xed, 0x9e, 0x6e, 0x49, 0x3c, 0xcd, 0x43,
+  0x27, 0xd2, 0x07, 0xd4, 0xde, 0xc7, 0x67, 0x18,
+  0x89, 0xcb, 0x30, 0x1f, 0x8d, 0xc6, 0x8f, 0xaa,
+  0xc8, 0x74, 0xdc, 0xc9, 0x5d, 0x5c, 0x31, 0xa4,
+  0x70, 0x88, 0x61, 0x2c, 0x9f, 0x0d, 0x2b, 0x87,
+  0x50, 0x82, 0x54, 0x64, 0x26, 0x7d, 0x03, 0x40,
+  0x34, 0x4b, 0x1c, 0x73, 0xd1, 0xc4, 0xfd, 0x3b,
+  0xcc, 0xfb, 0x7f, 0xab, 0xe6, 0x3e, 0x5b, 0xa5,
+  0xad, 0x04, 0x23, 0x9c, 0x14, 0x51, 0x22, 0xf0,
+  0x29, 0x79, 0x71, 0x7e, 0xff, 0x8c, 0x0e, 0xe2,
+  0x0c, 0xef, 0xbc, 0x72, 0x75, 0x6f, 0x37, 0xa1,
+  0xec, 0xd3, 0x8e, 0x62, 0x8b, 0x86, 0x10, 0xe8,
+  0x08, 0x77, 0x11, 0xbe, 0x92, 0x4f, 0x24, 0xc5,
+  0x32, 0x36, 0x9d, 0xcf, 0xf3, 0xa6, 0xbb, 0xac,
+  0x5e, 0x6c, 0xa9, 0x13, 0x57, 0x25, 0xb5, 0xe3,
+  0xbd, 0xa8, 0x3a, 0x01, 0x05, 0x59, 0x2a, 0x46
+};
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/symm/skipjack-tab.h b/symm/skipjack-tab.h
deleted file mode 100644 (file)
index 8994bbb..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*-c-*-
- *
- * The Skipjack S-box
- *
- * (c) 2000 Straylight/Edgeware
- */
-
-/*----- Licensing notice --------------------------------------------------*
- *
- * This file is part of Catacomb.
- *
- * Catacomb is free software; you can redistribute it and/or modify
- * 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.
- */
-
-#ifndef CATACOMB_SKIPJACK_TAB_H
-#define CATACOMB_SKIPJACK_TAB_H
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-
-/*----- The S-box ---------------------------------------------------------*/
-
-#define SKIPJACK_S {                                                   \
-  0xa3, 0xd7, 0x09, 0x83, 0xf8, 0x48, 0xf6, 0xf4,                      \
-  0xb3, 0x21, 0x15, 0x78, 0x99, 0xb1, 0xaf, 0xf9,                      \
-  0xe7, 0x2d, 0x4d, 0x8a, 0xce, 0x4c, 0xca, 0x2e,                      \
-  0x52, 0x95, 0xd9, 0x1e, 0x4e, 0x38, 0x44, 0x28,                      \
-  0x0a, 0xdf, 0x02, 0xa0, 0x17, 0xf1, 0x60, 0x68,                      \
-  0x12, 0xb7, 0x7a, 0xc3, 0xe9, 0xfa, 0x3d, 0x53,                      \
-  0x96, 0x84, 0x6b, 0xba, 0xf2, 0x63, 0x9a, 0x19,                      \
-  0x7c, 0xae, 0xe5, 0xf5, 0xf7, 0x16, 0x6a, 0xa2,                      \
-  0x39, 0xb6, 0x7b, 0x0f, 0xc1, 0x93, 0x81, 0x1b,                      \
-  0xee, 0xb4, 0x1a, 0xea, 0xd0, 0x91, 0x2f, 0xb8,                      \
-  0x55, 0xb9, 0xda, 0x85, 0x3f, 0x41, 0xbf, 0xe0,                      \
-  0x5a, 0x58, 0x80, 0x5f, 0x66, 0x0b, 0xd8, 0x90,                      \
-  0x35, 0xd5, 0xc0, 0xa7, 0x33, 0x06, 0x65, 0x69,                      \
-  0x45, 0x00, 0x94, 0x56, 0x6d, 0x98, 0x9b, 0x76,                      \
-  0x97, 0xfc, 0xb2, 0xc2, 0xb0, 0xfe, 0xdb, 0x20,                      \
-  0xe1, 0xeb, 0xd6, 0xe4, 0xdd, 0x47, 0x4a, 0x1d,                      \
-  0x42, 0xed, 0x9e, 0x6e, 0x49, 0x3c, 0xcd, 0x43,                      \
-  0x27, 0xd2, 0x07, 0xd4, 0xde, 0xc7, 0x67, 0x18,                      \
-  0x89, 0xcb, 0x30, 0x1f, 0x8d, 0xc6, 0x8f, 0xaa,                      \
-  0xc8, 0x74, 0xdc, 0xc9, 0x5d, 0x5c, 0x31, 0xa4,                      \
-  0x70, 0x88, 0x61, 0x2c, 0x9f, 0x0d, 0x2b, 0x87,                      \
-  0x50, 0x82, 0x54, 0x64, 0x26, 0x7d, 0x03, 0x40,                      \
-  0x34, 0x4b, 0x1c, 0x73, 0xd1, 0xc4, 0xfd, 0x3b,                      \
-  0xcc, 0xfb, 0x7f, 0xab, 0xe6, 0x3e, 0x5b, 0xa5,                      \
-  0xad, 0x04, 0x23, 0x9c, 0x14, 0x51, 0x22, 0xf0,                      \
-  0x29, 0x79, 0x71, 0x7e, 0xff, 0x8c, 0x0e, 0xe2,                      \
-  0x0c, 0xef, 0xbc, 0x72, 0x75, 0x6f, 0x37, 0xa1,                      \
-  0xec, 0xd3, 0x8e, 0x62, 0x8b, 0x86, 0x10, 0xe8,                      \
-  0x08, 0x77, 0x11, 0xbe, 0x92, 0x4f, 0x24, 0xc5,                      \
-  0x32, 0x36, 0x9d, 0xcf, 0xf3, 0xa6, 0xbb, 0xac,                      \
-  0x5e, 0x6c, 0xa9, 0x13, 0x57, 0x25, 0xb5, 0xe3,                      \
-  0xbd, 0xa8, 0x3a, 0x01, 0x05, 0x59, 0x2a, 0x46                       \
-}
-
-/*----- That's all, folks -------------------------------------------------*/
-
-#ifdef __cplusplus
-  }
-#endif
-
-#endif
index bd58ede..82c1a72 100644 (file)
@@ -32,7 +32,6 @@
 #include "blkc.h"
 #include "gcipher.h"
 #include "skipjack.h"
 #include "blkc.h"
 #include "gcipher.h"
 #include "skipjack.h"
-#include "skipjack-tab.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 
 /*----- Global variables --------------------------------------------------*/
 
@@ -40,7 +39,7 @@ const octet skipjack_keysz[] = { KSZ_SET, 10, 0 };
 
 /*----- The Skipjack S-box ------------------------------------------------*/
 
 
 /*----- The Skipjack S-box ------------------------------------------------*/
 
-static const octet f[256] = SKIPJACK_S;
+extern const octet skipjack_s[256];
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -83,10 +82,10 @@ void skipjack_init(skipjack_ctx *k, const void *buf, size_t sz)
 
 #define G(x, k) do {                                                   \
   octet _x = U8(x >> 8), _y = U8(x);                                   \
 
 #define G(x, k) do {                                                   \
   octet _x = U8(x >> 8), _y = U8(x);                                   \
-  _x ^= f[_y ^ U8(k >> 24)];                                           \
-  _y ^= f[_x ^ U8(k >> 16)];                                           \
-  _x ^= f[_y ^ U8(k >> 8)];                                            \
-  _y ^= f[_x ^ U8(k >> 0)];                                            \
+  _x ^= skipjack_s[_y ^ U8(k >> 24)];                                  \
+  _y ^= skipjack_s[_x ^ U8(k >> 16)];                                  \
+  _x ^= skipjack_s[_y ^ U8(k >>         8)];                                   \
+  _y ^= skipjack_s[_x ^ U8(k >>         0)];                                   \
   x = (_x << 8) | _y;                                                  \
 } while (0)
 
   x = (_x << 8) | _y;                                                  \
 } while (0)
 
@@ -128,10 +127,10 @@ void skipjack_eblk(const skipjack_ctx *k, const uint32 *s, uint32 *d)
 
 #define G_INV(x, k) do {                                               \
   octet _x = U8(x >> 8), _y = U8(x);                                   \
 
 #define G_INV(x, k) do {                                               \
   octet _x = U8(x >> 8), _y = U8(x);                                   \
-  _y ^= f[_x ^ U8(k >> 0)];                                            \
-  _x ^= f[_y ^ U8(k >> 8)];                                            \
-  _y ^= f[_x ^ U8(k >> 16)];                                           \
-  _x ^= f[_y ^ U8(k >> 24)];                                           \
+  _y ^= skipjack_s[_x ^ U8(k >>         0)];                                   \
+  _x ^= skipjack_s[_y ^ U8(k >>         8)];                                   \
+  _y ^= skipjack_s[_x ^ U8(k >> 16)];                                  \
+  _x ^= skipjack_s[_y ^ U8(k >> 24)];                                  \
   x = (_x << 8) | _y;                                                  \
 } while (0)
 
   x = (_x << 8) | _y;                                                  \
 } while (0)
 
index a2e90e3..cc26f58 100644 (file)
@@ -228,8 +228,8 @@ int main(void)
  * Square tables [generated]\n\
  */\n\
 \n\
  * Square tables [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_SQUARE_TAB_H\n\
-#define CATACOMB_SQUARE_TAB_H\n\
+#include <mLib/bits.h>\n\
+\n\
 ");
 
   /* --- Write out the S-box --- */
 ");
 
   /* --- Write out the S-box --- */
@@ -238,27 +238,27 @@ int main(void)
   fputs("\
 /* --- The byte substitution and its inverse --- */\n\
 \n\
   fputs("\
 /* --- The byte substitution and its inverse --- */\n\
 \n\
-#define SQUARE_S {                                                     \\\n\
+const octet square_s[256] = {\n\
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", s[i]);
     if (i == 255)
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", s[i]);
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
   fputs("\
     else
       fputs(", ", stdout);
   }
 
   fputs("\
-#define SQUARE_SI {                                                    \\\n\
+const octet square_si[256] = {\n\
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", si[i]);
     if (i == 255)
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", si[i]);
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -269,40 +269,36 @@ int main(void)
   fputs("\
 /* --- The big round tables --- */\n\
 \n\
   fputs("\
 /* --- The big round tables --- */\n\
 \n\
-#define SQUARE_T {                                                     \\\n\
+const uint32 square_t[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08x", t[j][i]);
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08x", t[j][i]);
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
   }
 
   fputs("\
       else
        fputs(", ", stdout);
     }
   }
 
   fputs("\
-#define SQUARE_TI {                                                    \\\n\
+const uint32 square_ti[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08x", ti[j][i]);
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08x", ti[j][i]);
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
       else
        fputs(", ", stdout);
     }
@@ -314,20 +310,18 @@ int main(void)
   fputs("\
 /* --- The key schedule tables --- */\n\
 \n\
   fputs("\
 /* --- The key schedule tables --- */\n\
 \n\
-#define SQUARE_U {                                                     \\\n\
+const uint32 square_u[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08x", u[j][i]);
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08x", u[j][i]);
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
       else
        fputs(", ", stdout);
     }
@@ -339,22 +333,20 @@ int main(void)
   fputs("\
 /* --- The round constants --- */\n\
 \n\
   fputs("\
 /* --- The round constants --- */\n\
 \n\
-#define SQUARE_RCON {                                                  \\\n\
+const octet square_rcon[32] = {\n\
   ", stdout);
   for (i = 0; i < sizeof(rc); i++) {
     printf("0x%02x", rc[i]);
     if (i == sizeof(rc) - 1)
   ", stdout);
   for (i = 0; i < sizeof(rc); i++) {
     printf("0x%02x", rc[i]);
     if (i == sizeof(rc) - 1)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n", stdout);
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
   /* --- Done --- */
 
     else
       fputs(", ", stdout);
   }
 
   /* --- Done --- */
 
-  puts("#endif");
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index 490b917..f3056de 100644 (file)
@@ -36,7 +36,6 @@
 #include "gcipher.h"
 #include "paranoia.h"
 #include "square.h"
 #include "gcipher.h"
 #include "paranoia.h"
 #include "square.h"
-#include "square-tab.h"
 
 /*----- Global variables --------------------------------------------------*/
 
 
 /*----- Global variables --------------------------------------------------*/
 
@@ -44,10 +43,17 @@ const octet square_keysz[] = { KSZ_RANGE, SQUARE_KEYSZ, 4, 16, 4 };
 
 /*----- Constant tables ---------------------------------------------------*/
 
 
 /*----- Constant tables ---------------------------------------------------*/
 
-static const octet S[256] = SQUARE_S, SI[256] = SQUARE_SI;
-static const uint32 T[4][256] = SQUARE_T, TI[4][256] = SQUARE_TI;
-static const uint32 U[4][256] = SQUARE_U;
-static const octet rcon[] = SQUARE_RCON;
+extern const octet square_s[256], square_si[256];
+extern const uint32 square_t[4][256], square_ti[4][256];
+extern const uint32 square_u[4][256];
+extern const octet square_rcon[32];
+
+#define S square_s
+#define SI square_si
+#define T square_t
+#define TI square_ti
+#define U square_u
+#define RCON square_rcon
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -90,7 +96,7 @@ void square_init(square_ctx *k, const void *buf, size_t sz)
 
   nw = (nr + 1) * 4;
   ww = kk[i - 1];
 
   nw = (nr + 1) * 4;
   ww = kk[i - 1];
-  p = rcon;
+  p = RCON;
   for (; i < nw; i++) {
     uint32 w = kk[i - nk];
     if (i % nk == 0) {
   for (; i < nw; i++) {
     uint32 w = kk[i - nk];
     if (i % nk == 0) {
index 49e05ef..2c0b8ac 100644 (file)
 #define TIGER_ROUND(a, b, c, x, n, op) do {                            \
   kludge64 _t;                                                         \
   XOR64(c, c, x);                                                      \
 #define TIGER_ROUND(a, b, c, x, n, op) do {                            \
   kludge64 _t;                                                         \
   XOR64(c, c, x);                                                      \
-  _t =         s[0][U8(LO64(c) >>  0)];                                \
-  XOR64(_t, _t, s[1][U8(LO64(c) >> 16)]);                              \
-  XOR64(_t, _t, s[2][U8(HI64(c) >>  0)]);                              \
-  XOR64(_t, _t, s[3][U8(HI64(c) >> 16)]);                              \
+  _t =         tiger_s[0][U8(LO64(c) >>  0)];                          \
+  XOR64(_t, _t, tiger_s[1][U8(LO64(c) >> 16)]);                                \
+  XOR64(_t, _t, tiger_s[2][U8(HI64(c) >>  0)]);                                \
+  XOR64(_t, _t, tiger_s[3][U8(HI64(c) >> 16)]);                                \
   SUB64(a, a, _t);                                                     \
   SUB64(a, a, _t);                                                     \
-  _t =         s[3][U8(LO64(c) >>  8)];                                \
-  XOR64(_t, _t, s[2][U8(LO64(c) >> 24)]);                              \
-  XOR64(_t, _t, s[1][U8(HI64(c) >>  8)]);                              \
-  XOR64(_t, _t, s[0][U8(HI64(c) >> 24)]);                              \
+  _t =         tiger_s[3][U8(LO64(c) >>  8)];                          \
+  XOR64(_t, _t, tiger_s[2][U8(LO64(c) >> 24)]);                                \
+  XOR64(_t, _t, tiger_s[1][U8(HI64(c) >>  8)]);                                \
+  XOR64(_t, _t, tiger_s[0][U8(HI64(c) >> 24)]);                                \
   ADD64(b, b, _t);                                                     \
   LSL64_(_t, b, n);                                                    \
   op##64(b, _t, b);                                                    \
   ADD64(b, b, _t);                                                     \
   LSL64_(_t, b, n);                                                    \
   op##64(b, _t, b);                                                    \
index 5029330..5ddbb03 100644 (file)
 
 #include "tiger-base.h"
 
 
 #include "tiger-base.h"
 
-/*----- Data structures ---------------------------------------------------*/
-
 /*----- Static variables --------------------------------------------------*/
 
 /*----- Static variables --------------------------------------------------*/
 
-static kludge64 s[4][256];
+static kludge64 tiger_s[4][256];
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
@@ -62,7 +60,7 @@ void gen(const char *buf, unsigned passes)
   for (i = 0; i < 256; i++) {
     for (j = 0; j < 4; j++) {
       uint32 z = 0x01010101 * i;
   for (i = 0; i < 256; i++) {
     for (j = 0; j < 4; j++) {
       uint32 z = 0x01010101 * i;
-      SET64(s[j][i], z, z);
+      SET64(tiger_s[j][i], z, z);
     }
   }
 
     }
   }
 
@@ -83,15 +81,15 @@ void gen(const char *buf, unsigned passes)
        }
        for (b = 0; b < 32; b += 8) {
          n = U8(LO64(ss[q]) >> b);
        }
        for (b = 0; b < 32; b += 8) {
          n = U8(LO64(ss[q]) >> b);
-         t = (LO64(s[k][j]) ^ LO64(s[k][n])) & (0xff << b);
-         SET64(s[k][j], HI64(s[k][j]), LO64(s[k][j]) ^ t);
-         SET64(s[k][n], HI64(s[k][n]), LO64(s[k][n]) ^ t);
+         t = (LO64(tiger_s[k][j]) ^ LO64(tiger_s[k][n])) & (0xff << b);
+         SET64(tiger_s[k][j], HI64(tiger_s[k][j]), LO64(tiger_s[k][j]) ^ t);
+         SET64(tiger_s[k][n], HI64(tiger_s[k][n]), LO64(tiger_s[k][n]) ^ t);
        }
        for (b = 0; b < 32; b += 8) {
          n = U8(HI64(ss[q]) >> b);
        }
        for (b = 0; b < 32; b += 8) {
          n = U8(HI64(ss[q]) >> b);
-         t = (HI64(s[k][j]) ^ HI64(s[k][n])) & (0xff << b);
-         SET64(s[k][j], HI64(s[k][j]) ^ t, LO64(s[k][j]));
-         SET64(s[k][n], HI64(s[k][n]) ^ t, LO64(s[k][n]));
+         t = (HI64(tiger_s[k][j]) ^ HI64(tiger_s[k][n])) & (0xff << b);
+         SET64(tiger_s[k][j], HI64(tiger_s[k][j]) ^ t, LO64(tiger_s[k][j]));
+         SET64(tiger_s[k][n], HI64(tiger_s[k][n]) ^ t, LO64(tiger_s[k][n]));
        }
       }
     }
        }
       }
     }
@@ -110,36 +108,28 @@ int main(void)
  * S-boxes for Tiger [generated]\n\
  */\n\
 \n\
  * S-boxes for Tiger [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_TIGER_TAB_H\n\
-#define CATACOMB_TIGER_TAB_H\n\
+#include <mLib/bits.h>\n\
 \n\
 \n\
-#define TIGER_S {                                                      \\\n\
+const kludge64 tiger_s[4][256] = {\n\
   { ", stdout);
 
   for (i = 0; i < 4; i++) {
     for (j = 0; j < 256; j++) {
   { ", stdout);
 
   for (i = 0; i < 4; i++) {
     for (j = 0; j < 256; j++) {
-#ifdef HAVE_UINT64
-      printf("{ 0x%016llxull }", s[i][j].i);
-#else
-      printf("{ 0x%08lx, 0x%08lx }",
-            (unsigned long)s[i][j].hi, (unsigned long)s[i][j].lo);
-#endif
+      printf("X64(%08lx, %08lx)",
+            (unsigned long)HI64(tiger_s[i][j]),
+            (unsigned long)LO64(tiger_s[i][j]));
       if (j == 255) {
        if (i == 3)
       if (j == 255) {
        if (i == 3)
-         fputs(" }             \\\n}\n", stdout);
+         fputs(" }\n};\n", stdout);
        else
        else
-         fputs(" },            \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (j % 2 == 1)
       } else if (j % 2 == 1)
-       fputs(",                \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
   }
 
       else
        fputs(", ", stdout);
     }
   }
 
-  fputs("\n#endif\n", stdout);
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index f9aa824..95faf56 100644 (file)
 #include "ghash-def.h"
 #include "hash.h"
 #include "tiger.h"
 #include "ghash-def.h"
 #include "hash.h"
 #include "tiger.h"
-#include "tiger-tab.h"
 #include "tiger-base.h"
 
 /*----- S-boxes -----------------------------------------------------------*/
 
 #include "tiger-base.h"
 
 /*----- S-boxes -----------------------------------------------------------*/
 
-static const kludge64 s[4][256] = TIGER_S;
+extern const kludge64 tiger_s[4][256];
 
 /*----- Main code ---------------------------------------------------------*/
 
 
 /*----- Main code ---------------------------------------------------------*/
 
index 4453fbe..f461a7d 100644 (file)
@@ -150,16 +150,16 @@ static void printq(const q_tab *q, const char *name)
   int j;
 
   printf("\
   int j;
 
   printf("\
-#define TWOFISH_%s {                                                   \\\n\
+const octet twofish_%s[256] = {\n\
   ", name);
   j = 0;
   for (i = 0; i < 256; i++) {
     printf("0x%02x", q->q[i]);
     j = (j + 1) & 7;
     if (i == 255)
   ", name);
   j = 0;
   for (i = 0; i < 256; i++) {
     printf("0x%02x", q->q[i]);
     j = (j + 1) & 7;
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if (j == 0)
     else if (j == 0)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -260,19 +260,19 @@ static void qmds(void)
  * bytes through appropriate @q@ tables and the MDS matrix.\n\
  */\n\
 \n\
  * bytes through appropriate @q@ tables and the MDS matrix.\n\
  */\n\
 \n\
-#define TWOFISH_QMDS {                                                 \\");
+const uint32 twofish_qmds[4][256] = {\
+");
   for (i = 0; i < 4; i++) {
     fputs("  { ", stdout);
     for (j = 0; j < 256; j++) {
       printf("0x%08lx", (unsigned long)t[i][j]);
       if (j == 255) {
        if (i == 3)
   for (i = 0; i < 4; i++) {
     fputs("  { ", stdout);
     for (j = 0; j < 256; j++) {
       printf("0x%08lx", (unsigned long)t[i][j]);
       if (j == 255) {
        if (i == 3)
-         puts(" }                      \\\n}");
+         puts(" }\n};");
        else
        else
-         puts(" },                     \\\n\
-                                                                       \\");
+         puts(" },\n");
       } else if (j % 4 == 3)
       } else if (j % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
       else
        fputs(", ", stdout);
     }
@@ -320,29 +320,29 @@ static void rslog(void)
  * The Reed-Solomon multiplies are accelerated by using log tables.\n\
  */\n\
 \n\
  * The Reed-Solomon multiplies are accelerated by using log tables.\n\
  */\n\
 \n\
-#define TWOFISH_RSLOG {                                                        \\\n\
+const octet twofish_rslog[256] = {\n\
   ", stdout);
 
   for (i = 0; i < 256; i++) {
     printf("0x%02x", rslog[i]);
     if (i == 255)
   ", stdout);
 
   for (i = 0; i < 256; i++) {
     printf("0x%02x", rslog[i]);
     if (i == 255)
-      puts("                   \\\n}\n");
+      puts("\n};\n");
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
 
     else
       fputs(", ", stdout);
   }
 
-  fputs("\
-#define TWOFISH_RSEXP {                                                        \\\n\
-  ", stdout);
+  printf("\
+const octet twofish_rsexp[%d] = {\n\
+  ", 255 + x + 1);
 
   for (i = 0; i < 255 + x + 1; i++) {
     printf("0x%02x", rsexp[i % 255]);
     if (i == 255 + x)
 
   for (i = 0; i < 255 + x + 1; i++) {
     printf("0x%02x", rsexp[i % 255]);
     if (i == 255 + x)
-      puts("                                           \\\n}\n");
+      puts("\n};\n");
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -350,15 +350,15 @@ static void rslog(void)
   fputs("\
 /* --- Reed-Solomon matrix with log entries --- */\n\
 \n\
   fputs("\
 /* --- Reed-Solomon matrix with log entries --- */\n\
 \n\
-#define TWOFISH_RS {                                                   \\\n\
+const octet twofish_rs[32] = {\n\
   ", stdout);
 
   for (i = 0; i < 32; i++) {
     printf("0x%02x", rslog[rs[i]]);
     if (i == 31)
   ", stdout);
 
   for (i = 0; i < 32; i++) {
     printf("0x%02x", rslog[rs[i]]);
     if (i == 31)
-      puts("                   \\\n}\n");
+      puts("\n};");
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -376,8 +376,7 @@ int main(void)
  * Twofish q tables [generated]\n\
  */\n\
 \n\
  * Twofish q tables [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_TWOFISH_TAB_H\n\
-#define CATACOMB_TWOFISH_TAB_H\n\
+#include <mLib/bits.h>\n\
 \n\
 ", stdout);
 
 \n\
 ", stdout);
 
@@ -388,8 +387,8 @@ int main(void)
 ");
   mkq(&q0, &qt0, "qt0");
   mkq(&q1, &qt1, "qt1");
 ");
   mkq(&q0, &qt0, "qt0");
   mkq(&q1, &qt1, "qt1");
-  printq(&q0, "Q0");
-  printq(&q1, "Q1");
+  printq(&q0, "q0");
+  printq(&q1, "q1");
 
   /* --- The MDS/q tables --- */
 
 
   /* --- The MDS/q tables --- */
 
@@ -398,8 +397,6 @@ int main(void)
 
   /* --- Done --- */
 
 
   /* --- Done --- */
 
-  puts("#endif");
-
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
   if (fclose(stdout)) {
     fprintf(stderr, "error writing data\n");
     exit(EXIT_FAILURE);
index 75e7491..05e8fc5 100644 (file)
@@ -34,7 +34,6 @@
 #include "blkc.h"
 #include "gcipher.h"
 #include "twofish.h"
 #include "blkc.h"
 #include "gcipher.h"
 #include "twofish.h"
-#include "twofish-tab.h"
 #include "paranoia.h"
 
 /*----- Global variables --------------------------------------------------*/
 #include "paranoia.h"
 
 /*----- Global variables --------------------------------------------------*/
@@ -43,10 +42,17 @@ const octet twofish_keysz[] = { KSZ_RANGE, TWOFISH_KEYSZ, 0, 32, 1 };
 
 /*----- Important tables --------------------------------------------------*/
 
 
 /*----- Important tables --------------------------------------------------*/
 
-static const octet q0[256] = TWOFISH_Q0, q1[256] = TWOFISH_Q1;
-static const uint32 qmds[4][256] = TWOFISH_QMDS;
-static const octet rslog[] = TWOFISH_RSLOG, rsexp[] = TWOFISH_RSEXP;
-static const octet rs[32] = TWOFISH_RS;
+extern const octet twofish_q0[256], twofish_q1[256];
+extern const uint32 twofish_qmds[4][256];
+extern const octet twofish_rslog[], twofish_rsexp[];
+extern const octet twofish_rs[32];
+
+#define Q0 twofish_q0
+#define Q1 twofish_q1
+#define QMDS twofish_qmds
+#define RSLOG twofish_rslog
+#define RSEXP twofish_rsexp
+#define RS twofish_rs
 
 /*----- Key initialization ------------------------------------------------*/
 
 
 /*----- Key initialization ------------------------------------------------*/
 
@@ -66,18 +72,18 @@ static uint32 h(uint32 x, const uint32 *l, unsigned k)
   /* --- Apply a series of @q@ tables to an integer --- */
 
 # define Q(x, qa, qb, qc, qd)                                          \
   /* --- Apply a series of @q@ tables to an integer --- */
 
 # define Q(x, qa, qb, qc, qd)                                          \
-  ((qa[((x) >> 0) & 0xff] <<  0) |                                     \
-   (qb[((x) >> 8) & 0xff] <<  8) |                                     \
+  ((qa[((x) >>  0) & 0xff] <<  0) |                                    \
+   (qb[((x) >>  8) & 0xff] <<  8) |                                    \
    (qc[((x) >> 16) & 0xff] << 16) |                                    \
    (qd[((x) >> 24) & 0xff] << 24))
 
   /* --- Grind through the tables --- */
 
   switch (k) {
    (qc[((x) >> 16) & 0xff] << 16) |                                    \
    (qd[((x) >> 24) & 0xff] << 24))
 
   /* --- Grind through the tables --- */
 
   switch (k) {
-    case 4: x = Q(x, q1, q0, q0, q1) ^ l[3];
-    case 3: x = Q(x, q1, q1, q0, q0) ^ l[2];
-    case 2: x = Q(x, q0, q1, q0, q1) ^ l[1];
-           x = Q(x, q0, q0, q1, q1) ^ l[0];
+    case 4: x = Q(x, Q1, Q0, Q0, Q1) ^ l[3];
+    case 3: x = Q(x, Q1, Q1, Q0, Q0) ^ l[2];
+    case 2: x = Q(x, Q0, Q1, Q0, Q1) ^ l[1];
+           x = Q(x, Q0, Q0, Q1, Q1) ^ l[0];
       break;
   }
 
       break;
   }
 
@@ -85,8 +91,8 @@ static uint32 h(uint32 x, const uint32 *l, unsigned k)
 
   /* --- Apply the MDS matrix --- */
 
 
   /* --- Apply the MDS matrix --- */
 
-  return (qmds[0][U8(x >>  0)] ^ qmds[1][U8(x >>  8)] ^
-         qmds[2][U8(x >> 16)] ^ qmds[3][U8(x >> 24)]);
+  return (QMDS[0][U8(x >>  0)] ^ QMDS[1][U8(x >>  8)] ^
+         QMDS[2][U8(x >> 16)] ^ QMDS[3][U8(x >> 24)]);
 }
 
 /* --- @twofish_initfk@ --- *
 }
 
 /* --- @twofish_initfk@ --- *
@@ -155,7 +161,7 @@ void twofish_initfk(twofish_ctx *k, const void *buf, size_t sz,
     q = p;
     for (i = 0; i < sz; i++) {
       octet ss[4];
     q = p;
     for (i = 0; i < sz; i++) {
       octet ss[4];
-      const octet *r = rs;
+      const octet *r = RS;
       int j;
 
       /* --- Extract the easy subkeys --- */
       int j;
 
       /* --- Extract the easy subkeys --- */
@@ -172,7 +178,7 @@ void twofish_initfk(twofish_ctx *k, const void *buf, size_t sz,
 
        for (k = 0; k < 8; k++) {
          unsigned char x = *qq ^ fk->t1[i * 8 + k];
 
        for (k = 0; k < 8; k++) {
          unsigned char x = *qq ^ fk->t1[i * 8 + k];
-         if (x) a ^= rsexp[rslog[x] + *r];
+         if (x) a ^= RSEXP[RSLOG[x] + *r];
          qq++;
          r++;
        }
          qq++;
          r++;
        }
@@ -219,10 +225,10 @@ void twofish_initfk(twofish_ctx *k, const void *buf, size_t sz,
   {
     unsigned i;
     static const octet *q[4][KMAX + 1] = {
   {
     unsigned i;
     static const octet *q[4][KMAX + 1] = {
-      { q1, q0, q0, q1, q1 },
-      { q0, q0, q1, q1, q0 },
-      { q1, q1, q0, q0, q0 },
-      { q0, q1, q1, q0, q1 }
+      { Q1, Q0, Q0, Q1, Q1 },
+      { Q0, Q0, Q1, Q1, Q0 },
+      { Q1, Q1, Q0, Q0, Q0 },
+      { Q0, Q1, Q1, Q0, Q1 }
     };
 
     for (i = 0; i < 4; i++) {
     };
 
     for (i = 0; i < 4; i++) {
@@ -244,7 +250,7 @@ void twofish_initfk(twofish_ctx *k, const void *buf, size_t sz,
 
        /* --- Write it in the key schedule --- */
 
 
        /* --- Write it in the key schedule --- */
 
-       k->g[i][j] = qmds[i][x];
+       k->g[i][j] = QMDS[i][x];
       }
     }
   }
       }
     }
   }
index cac72bf..402c15c 100644 (file)
@@ -106,8 +106,12 @@ int main(void)
  * Whirlpool tables [generated]\n\
  */\n\
 \n\
  * Whirlpool tables [generated]\n\
  */\n\
 \n\
-#ifndef CATACOMB_WHIRLPOOL_TAB_H\n\
-#define CATACOMB_WHIRLPOOL_TAB_H\n\
+#include <mLib/bits.h>\n\
+\n\
+#if defined(HAVE_UINT64)\n\
+#  define USE64\n\
+#endif\n\
+\n\
 ");
 
   /* --- Write out the S-box --- */
 ");
 
   /* --- Write out the S-box --- */
@@ -117,14 +121,14 @@ int main(void)
   fputs("\
 /* --- The byte substitution --- */\n\
 \n\
   fputs("\
 /* --- The byte substitution --- */\n\
 \n\
-#define WHIRLPOOL_S {                                                  \\\n\
+const octet whirlpool_s[256] = {\n\
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", S[i]);
     if (i == 255)
   ", stdout);
   for (i = 0; i < 256; i++) {
     printf("0x%02x", S[i]);
     if (i == 255)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if (i % 8 == 7)
     else if (i % 8 == 7)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -134,16 +138,16 @@ int main(void)
   fputs("\
 /* --- The key generation constants --- */\n\
 \n\
   fputs("\
 /* --- The key generation constants --- */\n\
 \n\
-#define WHIRLPOOL_C {                                                  \\\n\
+const kludge64 whirlpool_c[10] = {\n\
   ", stdout);
   for (i = 0; i < 10; i++) {
     printf("X64(%08lx, %08lx)",
           (unsigned long)LOAD32_L(&S[i * 8 + 4]),
           (unsigned long)LOAD32_L(&S[i * 8 + 0]));
     if (i == 9)
   ", stdout);
   for (i = 0; i < 10; i++) {
     printf("X64(%08lx, %08lx)",
           (unsigned long)LOAD32_L(&S[i * 8 + 4]),
           (unsigned long)LOAD32_L(&S[i * 8 + 0]));
     if (i == 9)
-      fputs("                  \\\n}\n\n", stdout);
+      fputs("\n};\n\n", stdout);
     else if (i % 2 == 1)
     else if (i % 2 == 1)
-      fputs(",                 \\\n  ", stdout);
+      fputs(",\n  ", stdout);
     else
       fputs(", ", stdout);
   }
     else
       fputs(", ", stdout);
   }
@@ -151,22 +155,22 @@ int main(void)
   /* --- Write out the big T tables --- */
 
   fputs("\
   /* --- Write out the big T tables --- */
 
   fputs("\
+#ifdef USE64\n\
+\n\
 /* --- The 64-bit big round tables --- */\n\
 \n\
 /* --- The 64-bit big round tables --- */\n\
 \n\
-#define WHIRLPOOL_T {                                                  \\\n\
+const kludge64 whirlpool_t[8][256] = {\n\
   { ", stdout);
   for (j = 0; j < 8; j++) {
     for (i = 0; i < 256; i++) {
       printf("X64(%08lx, %08lx)", w32(j, i, 0), w32(j, i, 1));
       if (i == 255) {
        if (j == 7)
   { ", stdout);
   for (j = 0; j < 8; j++) {
     for (i = 0; i < 256; i++) {
       printf("X64(%08lx, %08lx)", w32(j, i, 0), w32(j, i, 1));
       if (i == 255) {
        if (j == 7)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 2 == 1)
       } else if (i % 2 == 1)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
       else
        fputs(", ", stdout);
     }
@@ -175,42 +179,40 @@ int main(void)
   /* --- Write out the smaller U and V tables --- */
 
   fputs("\
   /* --- Write out the smaller U and V tables --- */
 
   fputs("\
+#else\n\
+\n\
 /* --- The 32-bit round tables --- */\n\
 \n\
 /* --- The 32-bit round tables --- */\n\
 \n\
-#define WHIRLPOOL_U {                                                  \\\n\
+const uint32 whirlpool_u[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", w32(j, i, 1));
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", w32(j, i, 1));
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
   }
 
   fputs("\
       else
        fputs(", ", stdout);
     }
   }
 
   fputs("\
-#define WHIRLPOOL_V {                                                  \\\n\
+const uint32 whirlpool_v[4][256] = {\n\
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", w32(j, i, 0));
       if (i == 255) {
        if (j == 3)
   { ", stdout);
   for (j = 0; j < 4; j++) {
     for (i = 0; i < 256; i++) {
       printf("0x%08lx", w32(j, i, 0));
       if (i == 255) {
        if (j == 3)
-         fputs(" }                     \\\n}\n\n", stdout);
+         fputs(" }\n};\n\n", stdout);
        else
        else
-         fputs(" },                    \\\n\
-                                                                       \\\n\
-  { ", stdout);
+         fputs(" },\n\n  { ", stdout);
       } else if (i % 4 == 3)
       } else if (i % 4 == 3)
-       fputs(",                        \\\n    ", stdout);
+       fputs(",\n    ", stdout);
       else
        fputs(", ", stdout);
     }
       else
        fputs(", ", stdout);
     }
index 4543287..ff517ce 100644 (file)
@@ -33,7 +33,6 @@
 #include "ghash-def.h"
 #include "hash.h"
 #include "whirlpool.h"
 #include "ghash-def.h"
 #include "hash.h"
 #include "whirlpool.h"
-#include "whirlpool-tab.h"
 
 #if defined(HAVE_UINT64)
 #  define USE64
 
 #if defined(HAVE_UINT64)
 #  define USE64
 
 /*----- Static variables --------------------------------------------------*/
 
 
 /*----- Static variables --------------------------------------------------*/
 
-static const kludge64 C[10] = WHIRLPOOL_C;
+extern const kludge64 whirlpool_c[10];
 
 #ifdef USE64
 
 #ifdef USE64
-static const kludge64 T[8][256] = WHIRLPOOL_T;
+extern const kludge64 whirlpool_t[8][256];
 #else
 #else
-static const uint32 U[4][256] = WHIRLPOOL_U, V[4][256] = WHIRLPOOL_V;
+extern const uint32 whirlpool_u[4][256], whirlpool_v[4][256];
 #endif
 
 /*----- Main code ---------------------------------------------------------*/
 #endif
 
 /*----- Main code ---------------------------------------------------------*/
@@ -69,7 +68,7 @@ static const uint32 U[4][256] = WHIRLPOOL_U, V[4][256] = WHIRLPOOL_V;
     (LO64(x) >> ((j) * 8)) :                                           \
     (HI64(x) >> ((j) * 8 - 32)))
 
     (LO64(x) >> ((j) * 8)) :                                           \
     (HI64(x) >> ((j) * 8 - 32)))
 
-#define TT(v, i, j) T[j][BYTE(v[OFFSET(i, j)], j)]
+#define TT(v, i, j) whirlpool_t[j][BYTE(v[OFFSET(i, j)], j)]
 
 #define XROW(vv, v, i) do {                                            \
   XOR64(vv[i], vv[i], TT(v, i, 1));                                    \
 
 #define XROW(vv, v, i) do {                                            \
   XOR64(vv[i], vv[i], TT(v, i, 1));                                    \
@@ -96,10 +95,10 @@ static const uint32 U[4][256] = WHIRLPOOL_U, V[4][256] = WHIRLPOOL_V;
 
 #define BYTE(x, j) U8((x) >> (((j) & 3) * 8))
 
 
 #define BYTE(x, j) U8((x) >> (((j) & 3) * 8))
 
-#define UUL(v, i, j) U[j & 3][BYTE(v[OFFSET(i, j)].lo, j)]
-#define VVL(v, i, j) V[j & 3][BYTE(v[OFFSET(i, j)].lo, j)]
-#define UUH(v, i, j) U[j & 3][BYTE(v[OFFSET(i, j)].hi, j)]
-#define VVH(v, i, j) V[j & 3][BYTE(v[OFFSET(i, j)].hi, j)]
+#define UUL(v, i, j) whirlpool_u[j & 3][BYTE(v[OFFSET(i, j)].lo, j)]
+#define VVL(v, i, j) whirlpool_v[j & 3][BYTE(v[OFFSET(i, j)].lo, j)]
+#define UUH(v, i, j) whirlpool_u[j & 3][BYTE(v[OFFSET(i, j)].hi, j)]
+#define VVH(v, i, j) whirlpool_v[j & 3][BYTE(v[OFFSET(i, j)].hi, j)]
 
 #define XROW(vv, v, i) do {                                            \
   vv[i].lo ^= UUL(v, i, 1); vv[i].hi ^= VVL(v, i, 1);                  \
 
 #define XROW(vv, v, i) do {                                            \
   vv[i].lo ^= UUL(v, i, 1); vv[i].hi ^= VVL(v, i, 1);                  \
@@ -138,7 +137,7 @@ static const uint32 U[4][256] = WHIRLPOOL_U, V[4][256] = WHIRLPOOL_V;
 void whirlpool_compress(whirlpool_ctx *ctx, const void *sbuf)
 {
   kludge64 m[8], k[8], kk[8], v[8], vv[8];
 void whirlpool_compress(whirlpool_ctx *ctx, const void *sbuf)
 {
   kludge64 m[8], k[8], kk[8], v[8], vv[8];
-  const kludge64 *c = C;
+  const kludge64 *c = whirlpool_c;
   const octet *s = sbuf;
   int i;
 
   const octet *s = sbuf;
   int i;
 
diff --git a/vars.am b/vars.am
index de79545..a0c3a6e 100644 (file)
--- a/vars.am
+++ b/vars.am
@@ -46,13 +46,34 @@ SUFFIXES             =
 TESTS                   =
 BUILT_SOURCES           =
 
 TESTS                   =
 BUILT_SOURCES           =
 
+EXTRA_PROGRAMS          =
 noinst_PROGRAMS                 =
 noinst_PROGRAMS                 =
+check_PROGRAMS          =
 pkginclude_HEADERS      =
 nodist_pkginclude_HEADERS =
 archinclude_HEADERS     =
 nodist_archinclude_HEADERS =
 
 ###--------------------------------------------------------------------------
 pkginclude_HEADERS      =
 nodist_pkginclude_HEADERS =
 archinclude_HEADERS     =
 nodist_archinclude_HEADERS =
 
 ###--------------------------------------------------------------------------
+### Machinery for precomputations.
+
+## Location of precomputed tables.
+precomp                         = $(top_srcdir)/precomp
+
+## Precomputed source code files.
+PRECOMPS                =
+EXTRA_DIST             += $(PRECOMPS)
+BUILT_SOURCES          += $(PRECOMPS)
+MAINTAINERCLEANFILES   += $(PRECOMPS)
+
+## Programs which make the tables.  These should be made by an explicit
+## recursive `make' call in the relevant rule, so that we don't try to
+## reconstruct them unnecessarily.
+PRECOMP_PROGS           =
+EXTRA_PROGRAMS         += $(PRECOMP_PROGS)
+CLEANFILES             += $(PRECOMP_PROGS)
+
+###--------------------------------------------------------------------------
 ### Standard configuration substitutions.
 
 ## Substitute tags in files.
 ### Standard configuration substitutions.
 
 ## Substitute tags in files.
@@ -74,6 +95,7 @@ SUBST = $(V_SUBST)$(confsubst)
 
 CATACOMB_INCLUDES       = \
        -I$(top_srcdir) \
 
 CATACOMB_INCLUDES       = \
        -I$(top_srcdir) \
+       -I$(precomp) \
        -I$(top_srcdir)/base \
        -I$(top_srcdir)/key \
        -I$(top_srcdir)/math \
        -I$(top_srcdir)/base \
        -I$(top_srcdir)/key \
        -I$(top_srcdir)/math \