From: Mark Wooding Date: Sun, 2 Jun 2013 20:37:47 +0000 (+0100) Subject: Generate precomputed tables as sources in `precomps/'. X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/commitdiff_plain/e5b61a8dec3586f96d25bd3ef454176526ff0f69 Generate precomputed tables as sources in `precomps/'. Rather than header files in the build tree. The precomputations are distributed, and not built in cross builds. --- diff --git a/.gitignore b/.gitignore index e849112..7603014 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ configure COPYING.LIB autom4te.cache config +precomp progs/getdate.h progs/getdate.y symm/modes.am diff --git a/math/Makefile.am b/math/Makefile.am index 5bb546c..dfc5b58 100644 --- a/math/Makefile.am +++ b/math/Makefile.am @@ -200,17 +200,20 @@ pkginclude_HEADERS += limlee.h 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) -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 +endif ## 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 -primeiter.lo: wheel.h +primeiter.lo: $(precomp)/wheel.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. -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) -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 +endif ###-------------------------------------------------------------------------- ### 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 -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 -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 diff --git a/math/gfx-sqr-mktab.c b/math/gfx-sqr-mktab.c index 1ecd995..efc610a 100644 --- a/math/gfx-sqr-mktab.c +++ b/math/gfx-sqr-mktab.c @@ -60,24 +60,21 @@ fputs("\ * Bit spacing table for binary polynomial squaring\n\ */\n\ \n\ -#ifndef GFX_SQR_TAB_H\n\ -#define GFX_SQR_TAB_H\n\ +#include \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) - puts(" \\\n}\n"); + puts("\n};"); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } - fputs("#endif\n", stdout); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/math/gfx-sqr.c b/math/gfx-sqr.c index 8e26f36..ba54da8 100644 --- a/math/gfx-sqr.c +++ b/math/gfx-sqr.c @@ -29,11 +29,10 @@ #include "mpx.h" #include "gfx.h" -#include "gfx-sqr-tab.h" /*----- Static variables --------------------------------------------------*/ -static const uint16 tab[256] = GFX_SQRTAB; +extern const uint16 gfx_sqrtab[256]; /*----- 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 --- */ - aa |= (mpd)(tab[U8(a)]) << bb; + aa |= (mpd)(gfx_sqrtab[U8(a)]) << bb; 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 (;;) { - aa |= (mpd)(tab[U8(a)]) << bb; + aa |= (mpd)(gfx_sqrtab[U8(a)]) << bb; bb += 16; if (bb > MPW_BITS) { *dv++ = MPW(aa); diff --git a/misc/Makefile.am b/misc/Makefile.am index f5f380a..54be12a 100644 --- a/misc/Makefile.am +++ b/misc/Makefile.am @@ -29,18 +29,24 @@ include $(top_srcdir)/vars.am 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 -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). diff --git a/misc/gfshare-mktab.c b/misc/gfshare-mktab.c index 9fc073f..a47fae7 100644 --- a/misc/gfshare-mktab.c +++ b/misc/gfshare-mktab.c @@ -61,40 +61,37 @@ int main(int argc, char *argv[]) * Log tables for secret sharing in %$\\gf{2^8}$% [generated]\n\ */\n\ \n\ -#ifndef GFSHARE_TAB_H\n\ -#define GFSHARE_TAB_H\n\ +#include \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) - puts(" \\\n}\n"); + puts("\n};\n"); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); 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) - puts(" \\\n}\n"); + puts("\n};"); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } /* --- Done --- */ - fputs("#endif\n", stdout); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/misc/gfshare.c b/misc/gfshare.c index 0eb076b..80a6ef6 100644 --- a/misc/gfshare.c +++ b/misc/gfshare.c @@ -37,12 +37,11 @@ #include "arena.h" #include "gfshare.h" -#include "gfshare-tab.h" #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 ---------------------------------------------------------*/ @@ -121,7 +120,7 @@ void gfshare_get(gfshare *s, unsigned x, void *buf) { 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$% --- */ @@ -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) - qq = gfexp[ilog + gflog[qq]]; + qq = gfshare_exp[ilog + gfshare_log[qq]]; *q++ = qq ^ *p++; } } @@ -233,10 +232,10 @@ void gfshare_combine(gfshare *s, void *buf) if (i == j) continue; xj = GFSHARE_INDEX(s, j); - c += gflog[xj]; + c += gfshare_log[xj]; if (c >= 0xff) c -= 0xff; - ci += gflog[xi ^ xj]; + ci += gfshare_log[xi ^ xj]; 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 ^= gfexp[c + gflog[*q]]; + *p ^= gfshare_exp[c + gfshare_log[*q]]; p++, q++; } } diff --git a/symm/.gitignore b/symm/.gitignore new file mode 100644 index 0000000..55e2c17 --- /dev/null +++ b/symm/.gitignore @@ -0,0 +1 @@ +modes/ diff --git a/symm/Makefile.am b/symm/Makefile.am index 9c2895b..c4043d2 100644 --- a/symm/Makefile.am +++ b/symm/Makefile.am @@ -32,7 +32,7 @@ nodist_libsymm_la_SOURCES = TEST_LIBS = libsymm.la -VPATH += modes +VPATH += $(srcdir)/modes ###-------------------------------------------------------------------------- ### Autogenerated lists. @@ -89,17 +89,21 @@ pkginclude_HEADERS += $(BLKC_H) ## 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-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 -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 @@ -111,29 +115,36 @@ t/cast256: t/cast256.aes ## 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 -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 -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 @@ -148,7 +159,7 @@ BLKCS += noekeon ## Rivest's `RC2' block cipher. BLKCS += rc2 -libsymm_la_SOURCES += rc2-tab.h +libsymm_la_SOURCES += rc2-tab.c ## 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 -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 @@ -173,17 +188,21 @@ t/rijndael: t/rijndael.aes ## 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 -noinst_PROGRAMS += serpent-check +check_PROGRAMS += serpent-check 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 -libsymm_la_SOURCES += skipjack-tab.h +libsymm_la_SOURCES += skipjack-tab.c ## 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 @@ -214,12 +237,16 @@ BLKCS += tea xtea ## 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 @@ -259,7 +286,7 @@ HASHES += has160 ## 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 @@ -273,22 +300,29 @@ HASHES += sha384 sha512 ## 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 -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 @@ -322,36 +356,39 @@ ALL_CIPHERS += seal ### 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 += modes/gen-stamp +MAINTAINERCLEANFILES += 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 \ - modes/@base-@mode.c \ + $(srcdir)/modes/@base-@mode.c \ 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 \ - modes/@base-@mode.c \ + $(srcdir)/modes/@base-@mode.c \ 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)" - $(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) -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) -CLEANFILES += $(GENMODES_H) +EXTRA_DIST += $(GENMODES_H) +MAINTAINERCLEANFILES += $(GENMODES_H) nodist_pkginclude_HEADERS += $(GENMODES_H) $(GENMODES_H): modes/gen-stamp diff --git a/symm/blowfish-mktab.c b/symm/blowfish-mktab.c index 752fb32..72b4fc7 100644 --- a/symm/blowfish-mktab.c +++ b/symm/blowfish-mktab.c @@ -145,20 +145,17 @@ int main(void) * 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\ -#define BLOWFISH_IKEY { \\\n\ +const blowfish_ctx blowfish_ikey = {\n\ { ", 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) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -168,13 +165,11 @@ int main(void) printf("0x%08x", *d++); if (i == 255) { if (j == 3) - fputs(" } \\\n}\n\n#endif\n", stdout); + fputs(" }\n};\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } diff --git a/symm/blowfish.c b/symm/blowfish.c index 4bfb84d..c4903c1 100644 --- a/symm/blowfish.c +++ b/symm/blowfish.c @@ -30,14 +30,13 @@ #include #include "blowfish.h" -#include "blowfish-tab.h" #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 }; @@ -119,7 +118,7 @@ void blowfish_init(blowfish_ctx *k, const void *buf, size_t sz) /* --- Copy the initial value over --- */ - memcpy(k, &ikey, sizeof(ikey)); + *k = blowfish_ikey; /* --- Initialize the %$P$% array --- */ diff --git a/symm/cast-s.c b/symm/cast-s.c index 968d888..f0adea6 100644 --- a/symm/cast-s.c +++ b/symm/cast-s.c @@ -30,10 +30,270 @@ #include #include "cast-base.h" -#include "cast-tab.h" /*----- 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 -------------------------------------------------*/ diff --git a/symm/cast-sk.c b/symm/cast-sk.c index d1620ee..0b2db4a 100644 --- a/symm/cast-sk.c +++ b/symm/cast-sk.c @@ -30,10 +30,270 @@ #include #include "cast-base.h" -#include "cast-tab.h" /*----- 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 -------------------------------------------------*/ diff --git a/symm/cast-tab.h b/symm/cast-tab.h deleted file mode 100644 index b6e2f9f..0000000 --- a/symm/cast-tab.h +++ /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 index 4d55881..0000000 --- a/symm/des-base.c +++ /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 - -#include "des-base.h" -#include "des-tab.h" - -/*----- Global variables --------------------------------------------------*/ - -const uint32 des_sp[8][64] = DES_SP; - -/*----- That's all, folks -------------------------------------------------*/ diff --git a/symm/des-mktab.c b/symm/des-mktab.c index 5dc8c4a..7dad026 100644 --- a/symm/des-mktab.c +++ b/symm/des-mktab.c @@ -246,33 +246,24 @@ int main(void) * DES tables [generated]\n\ */\n\ \n\ -#ifndef CATACOMB_DES_TAB_H\n\ -#define CATACOMB_DES_TAB_H\n\ +#include \"des-base.h\"\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); - 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 = ", \\\n "; + sep = ",\n "; 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"); diff --git a/symm/desx-tab.c b/symm/desx-tab.c new file mode 100644 index 0000000..30ea9a2 --- /dev/null +++ b/symm/desx-tab.c @@ -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 + +/*----- 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 index f1b54d4..0000000 --- a/symm/desx-tab.h +++ /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 diff --git a/symm/desx.c b/symm/desx.c index d65ffa7..e9a77ed 100644 --- a/symm/desx.c +++ b/symm/desx.c @@ -38,12 +38,11 @@ #include "des-base.h" #include "des.h" #include "desx.h" -#include "desx-tab.h" #include "gcipher.h" /*----- Tables ------------------------------------------------------------*/ -static const octet s[256] = DESX_S; +extern const octet desx_s[256]; /*----- Global variables --------------------------------------------------*/ @@ -71,7 +70,7 @@ static void mangle(octet *b, const octet *p) 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) diff --git a/symm/mars-mktab.c b/symm/mars-mktab.c index 750f727..d43f7c0 100644 --- a/symm/mars-mktab.c +++ b/symm/mars-mktab.c @@ -283,27 +283,24 @@ int main(void) * MARS tables [generated]\n\ */\n\ \n\ -#ifndef CATACOMB_MARS_TAB_H\n\ -#define CATACOMB_MARS_TAB_H\n\ +#include \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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n", stdout); else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } - puts("#endif"); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/symm/mars.c b/symm/mars.c index 6f73b42..4c7b302 100644 --- a/symm/mars.c +++ b/symm/mars.c @@ -35,7 +35,6 @@ #include "blkc.h" #include "gcipher.h" #include "mars.h" -#include "mars-tab.h" #include "paranoia.h" /*----- Global variables --------------------------------------------------*/ @@ -44,10 +43,10 @@ const octet mars_keysz[] = { KSZ_RANGE, MARS_KEYSZ, 0, 56, 4 }; /*----- 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 ---------------------------------------------------------*/ @@ -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[i] + s[x & 511u]; + x = t[i] + mars_s[x & 511u]; 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); \ - 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) @@ -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); \ - 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) diff --git a/symm/md2-tab.c b/symm/md2-tab.c new file mode 100644 index 0000000..b692f3d --- /dev/null +++ b/symm/md2-tab.c @@ -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 + +/*----- 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 index 3e1b2e9..0000000 --- a/symm/md2-tab.h +++ /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 diff --git a/symm/md2.c b/symm/md2.c index 180bc65..79bc472 100644 --- a/symm/md2.c +++ b/symm/md2.c @@ -33,11 +33,10 @@ #include "ghash-def.h" #include "hash.h" #include "md2.h" -#include "md2-tab.h" /*----- Tables ------------------------------------------------------------*/ -static const octet s[256] = MD2_S; +extern const octet md2_s[256]; /*----- Main code ---------------------------------------------------------*/ @@ -76,7 +75,7 @@ void md2_compress(md2_ctx *ctx, const void *sbuf) 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); @@ -87,7 +86,7 @@ void md2_compress(md2_ctx *ctx, const void *sbuf) /* --- 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 diff --git a/symm/rc2-tab.c b/symm/rc2-tab.c new file mode 100644 index 0000000..e0ec03b --- /dev/null +++ b/symm/rc2-tab.c @@ -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 + +/*----- 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 index 48b46e0..0000000 --- a/symm/rc2-tab.h +++ /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 diff --git a/symm/rc2.c b/symm/rc2.c index 4ea85b6..df59425 100644 --- a/symm/rc2.c +++ b/symm/rc2.c @@ -36,7 +36,6 @@ #include "gcipher.h" #include "paranoia.h" #include "rc2.h" -#include "rc2-tab.h" /*----- Global variables --------------------------------------------------*/ @@ -44,7 +43,7 @@ const octet rc2_keysz[] = { KSZ_RANGE, RC2_KEYSZ, 1, 128, 1 }; /*----- Important tables --------------------------------------------------*/ -static const octet pi[256] = RC2_PI; +extern const octet rc2_pi[256]; /*----- 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++) - 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; - l[i] = pi[l[i] & tm]; + l[i] = rc2_pi[l[i] & tm]; 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 --- */ diff --git a/symm/rijndael-base.c b/symm/rijndael-base.c index d3ec0d6..bfab63a 100644 --- a/symm/rijndael-base.c +++ b/symm/rijndael-base.c @@ -36,21 +36,11 @@ #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 }; -/*----- 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@ --- * diff --git a/symm/rijndael-mktab.c b/symm/rijndael-mktab.c index 4260de6..91007cc 100644 --- a/symm/rijndael-mktab.c +++ b/symm/rijndael-mktab.c @@ -230,8 +230,7 @@ int main(void) * 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 --- */ @@ -240,27 +239,27 @@ int main(void) 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -271,40 +270,36 @@ int main(void) 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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); 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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -316,20 +311,18 @@ int main(void) 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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -341,22 +334,20 @@ int main(void) 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n", stdout); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } /* --- Done --- */ - puts("#endif"); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/symm/safer-mktab.c b/symm/safer-mktab.c index d9ae784..11e9b9d 100644 --- a/symm/safer-mktab.c +++ b/symm/safer-mktab.c @@ -56,41 +56,38 @@ int main(void) * SAFER tables [generated]\n\ */\n\ \n\ -#ifndef CATACOMB_SAFER_TAB_H\n\ -#define CATACOMB_SAFER_TAB_H\n\ +#include \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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if ((i + 1)%8 == 0) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n", stdout); else if ((i + 1)%8 == 0) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } - puts("#endif"); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/symm/safer.c b/symm/safer.c index 055a5f6..8dd31cb 100644 --- a/symm/safer.c +++ b/symm/safer.c @@ -36,7 +36,6 @@ #include "gcipher.h" #include "paranoia.h" #include "safer.h" -#include "safer-tab.h" /*----- Global variables --------------------------------------------------*/ @@ -44,7 +43,9 @@ const octet safer_keysz[] = { KSZ_SET, 8, 16, 0 }; /*----- 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 ---------------------------------------------------------*/ @@ -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++) - 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++) @@ -112,7 +113,7 @@ static void next_sk(struct ksched *t, octet *k) } 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++) @@ -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 { \ - 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++; \ @@ -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 { \ - 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; \ diff --git a/symm/safersk.c b/symm/safersk.c index e665410..c9041ee 100644 --- a/symm/safersk.c +++ b/symm/safersk.c @@ -11,4 +11,3 @@ 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 index 0000000..345a67a --- /dev/null +++ b/symm/skipjack-tab.c @@ -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 + +/*----- 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 index 8994bbb..0000000 --- a/symm/skipjack-tab.h +++ /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 diff --git a/symm/skipjack.c b/symm/skipjack.c index bd58ede..82c1a72 100644 --- a/symm/skipjack.c +++ b/symm/skipjack.c @@ -32,7 +32,6 @@ #include "blkc.h" #include "gcipher.h" #include "skipjack.h" -#include "skipjack-tab.h" /*----- Global variables --------------------------------------------------*/ @@ -40,7 +39,7 @@ const octet skipjack_keysz[] = { KSZ_SET, 10, 0 }; /*----- The Skipjack S-box ------------------------------------------------*/ -static const octet f[256] = SKIPJACK_S; +extern const octet skipjack_s[256]; /*----- 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); \ - _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) @@ -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); \ - _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) diff --git a/symm/square-mktab.c b/symm/square-mktab.c index a2e90e3..cc26f58 100644 --- a/symm/square-mktab.c +++ b/symm/square-mktab.c @@ -228,8 +228,8 @@ int main(void) * Square tables [generated]\n\ */\n\ \n\ -#ifndef CATACOMB_SQUARE_TAB_H\n\ -#define CATACOMB_SQUARE_TAB_H\n\ +#include \n\ +\n\ "); /* --- Write out the S-box --- */ @@ -238,27 +238,27 @@ int main(void) 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -269,40 +269,36 @@ int main(void) 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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); 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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -314,20 +310,18 @@ int main(void) 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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -339,22 +333,20 @@ int main(void) 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n", stdout); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } /* --- Done --- */ - puts("#endif"); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/symm/square.c b/symm/square.c index 490b917..f3056de 100644 --- a/symm/square.c +++ b/symm/square.c @@ -36,7 +36,6 @@ #include "gcipher.h" #include "paranoia.h" #include "square.h" -#include "square-tab.h" /*----- Global variables --------------------------------------------------*/ @@ -44,10 +43,17 @@ const octet square_keysz[] = { KSZ_RANGE, SQUARE_KEYSZ, 4, 16, 4 }; /*----- 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 ---------------------------------------------------------*/ @@ -90,7 +96,7 @@ void square_init(square_ctx *k, const void *buf, size_t sz) 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) { diff --git a/symm/tiger-base.h b/symm/tiger-base.h index 49e05ef..2c0b8ac 100644 --- a/symm/tiger-base.h +++ b/symm/tiger-base.h @@ -43,15 +43,15 @@ #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); \ - _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); \ diff --git a/symm/tiger-mktab.c b/symm/tiger-mktab.c index 5029330..5ddbb03 100644 --- a/symm/tiger-mktab.c +++ b/symm/tiger-mktab.c @@ -34,11 +34,9 @@ #include "tiger-base.h" -/*----- Data structures ---------------------------------------------------*/ - /*----- Static variables --------------------------------------------------*/ -static kludge64 s[4][256]; +static kludge64 tiger_s[4][256]; /*----- 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; - 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); - 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); - 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\ -#ifndef CATACOMB_TIGER_TAB_H\n\ -#define CATACOMB_TIGER_TAB_H\n\ +#include \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++) { -#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) - fputs(" } \\\n}\n", stdout); + fputs(" }\n};\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (j % 2 == 1) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } } - fputs("\n#endif\n", stdout); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/symm/tiger.c b/symm/tiger.c index f9aa824..95faf56 100644 --- a/symm/tiger.c +++ b/symm/tiger.c @@ -32,12 +32,11 @@ #include "ghash-def.h" #include "hash.h" #include "tiger.h" -#include "tiger-tab.h" #include "tiger-base.h" /*----- S-boxes -----------------------------------------------------------*/ -static const kludge64 s[4][256] = TIGER_S; +extern const kludge64 tiger_s[4][256]; /*----- Main code ---------------------------------------------------------*/ diff --git a/symm/twofish-mktab.c b/symm/twofish-mktab.c index 4453fbe..f461a7d 100644 --- a/symm/twofish-mktab.c +++ b/symm/twofish-mktab.c @@ -150,16 +150,16 @@ static void printq(const q_tab *q, const char *name) 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if (j == 0) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -260,19 +260,19 @@ static void qmds(void) * 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) - puts(" } \\\n}"); + puts(" }\n};"); else - puts(" }, \\\n\ - \\"); + puts(" },\n"); } else if (j % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", 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\ -#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) - puts(" \\\n}\n"); + puts("\n};\n"); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", 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) - puts(" \\\n}\n"); + puts("\n};\n"); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -350,15 +350,15 @@ static void rslog(void) 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) - puts(" \\\n}\n"); + puts("\n};"); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -376,8 +376,7 @@ int main(void) * Twofish q tables [generated]\n\ */\n\ \n\ -#ifndef CATACOMB_TWOFISH_TAB_H\n\ -#define CATACOMB_TWOFISH_TAB_H\n\ +#include \n\ \n\ ", stdout); @@ -388,8 +387,8 @@ int main(void) "); mkq(&q0, &qt0, "qt0"); mkq(&q1, &qt1, "qt1"); - printq(&q0, "Q0"); - printq(&q1, "Q1"); + printq(&q0, "q0"); + printq(&q1, "q1"); /* --- The MDS/q tables --- */ @@ -398,8 +397,6 @@ int main(void) /* --- Done --- */ - puts("#endif"); - if (fclose(stdout)) { fprintf(stderr, "error writing data\n"); exit(EXIT_FAILURE); diff --git a/symm/twofish.c b/symm/twofish.c index 75e7491..05e8fc5 100644 --- a/symm/twofish.c +++ b/symm/twofish.c @@ -34,7 +34,6 @@ #include "blkc.h" #include "gcipher.h" #include "twofish.h" -#include "twofish-tab.h" #include "paranoia.h" /*----- Global variables --------------------------------------------------*/ @@ -43,10 +42,17 @@ const octet twofish_keysz[] = { KSZ_RANGE, TWOFISH_KEYSZ, 0, 32, 1 }; /*----- 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 ------------------------------------------------*/ @@ -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) \ - ((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) { - 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; } @@ -85,8 +91,8 @@ static uint32 h(uint32 x, const uint32 *l, unsigned k) /* --- 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@ --- * @@ -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]; - const octet *r = rs; + const octet *r = RS; 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]; - if (x) a ^= rsexp[rslog[x] + *r]; + if (x) a ^= RSEXP[RSLOG[x] + *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] = { - { 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++) { @@ -244,7 +250,7 @@ void twofish_initfk(twofish_ctx *k, const void *buf, size_t sz, /* --- Write it in the key schedule --- */ - k->g[i][j] = qmds[i][x]; + k->g[i][j] = QMDS[i][x]; } } } diff --git a/symm/whirlpool-mktab.c b/symm/whirlpool-mktab.c index cac72bf..402c15c 100644 --- a/symm/whirlpool-mktab.c +++ b/symm/whirlpool-mktab.c @@ -106,8 +106,12 @@ int main(void) * Whirlpool tables [generated]\n\ */\n\ \n\ -#ifndef CATACOMB_WHIRLPOOL_TAB_H\n\ -#define CATACOMB_WHIRLPOOL_TAB_H\n\ +#include \n\ +\n\ +#if defined(HAVE_UINT64)\n\ +# define USE64\n\ +#endif\n\ +\n\ "); /* --- Write out the S-box --- */ @@ -117,14 +121,14 @@ int main(void) 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if (i % 8 == 7) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -134,16 +138,16 @@ int main(void) 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) - fputs(" \\\n}\n\n", stdout); + fputs("\n};\n\n", stdout); else if (i % 2 == 1) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -151,22 +155,22 @@ int main(void) /* --- Write out the big T tables --- */ fputs("\ +#ifdef USE64\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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 2 == 1) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } @@ -175,42 +179,40 @@ int main(void) /* --- Write out the smaller U and V tables --- */ fputs("\ +#else\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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); 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) - fputs(" } \\\n}\n\n", stdout); + fputs(" }\n};\n\n", stdout); else - fputs(" }, \\\n\ - \\\n\ - { ", stdout); + fputs(" },\n\n { ", stdout); } else if (i % 4 == 3) - fputs(", \\\n ", stdout); + fputs(",\n ", stdout); else fputs(", ", stdout); } diff --git a/symm/whirlpool.c b/symm/whirlpool.c index 4543287..ff517ce 100644 --- a/symm/whirlpool.c +++ b/symm/whirlpool.c @@ -33,7 +33,6 @@ #include "ghash-def.h" #include "hash.h" #include "whirlpool.h" -#include "whirlpool-tab.h" #if defined(HAVE_UINT64) # define USE64 @@ -41,12 +40,12 @@ /*----- Static variables --------------------------------------------------*/ -static const kludge64 C[10] = WHIRLPOOL_C; +extern const kludge64 whirlpool_c[10]; #ifdef USE64 -static const kludge64 T[8][256] = WHIRLPOOL_T; +extern const kludge64 whirlpool_t[8][256]; #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 ---------------------------------------------------------*/ @@ -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))) -#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)); \ @@ -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 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); \ @@ -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]; - const kludge64 *c = C; + const kludge64 *c = whirlpool_c; const octet *s = sbuf; int i; diff --git a/vars.am b/vars.am index de79545..a0c3a6e 100644 --- a/vars.am +++ b/vars.am @@ -46,13 +46,34 @@ SUFFIXES = TESTS = BUILT_SOURCES = +EXTRA_PROGRAMS = noinst_PROGRAMS = +check_PROGRAMS = 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. @@ -74,6 +95,7 @@ SUBST = $(V_SUBST)$(confsubst) CATACOMB_INCLUDES = \ -I$(top_srcdir) \ + -I$(precomp) \ -I$(top_srcdir)/base \ -I$(top_srcdir)/key \ -I$(top_srcdir)/math \