build: Cope with the `subdir-objects' world Automake wants us to live in.
[catacomb] / symm / Makefile.am
index bd7710b..7deed65 100644 (file)
@@ -102,16 +102,17 @@ pkginclude_HEADERS        += $(BLKC_H)
 
 ## Schneier's `Blowfish' block cipher.
 BLKCS                  += blowfish
-libsymm_la_SOURCES     += $(precomp)/blowfish-tab.c
-PRECOMPS               += $(precomp)/blowfish-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/blowfish-tab.c
+PRECOMPS               += $(precomp)/symm/blowfish-tab.c
 PRECOMP_PROGS          += blowfish-mktab
 blowfish_mktab_CPPFLAGS         = $(AM_CPPFLAGS) -DQUIET
 if !CROSS_COMPILING
-$(precomp)/blowfish-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/blowfish-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./blowfish-mktab >$(precomp)/symm/blowfish-tab.c.new && \
+               mv $(precomp)/symm/blowfish-tab.c.new \
+                       $(precomp)/symm/blowfish-tab.c
 endif
 
 ## Adams and Tavares' `CAST' block ciphers.
@@ -128,15 +129,16 @@ t/cast256: t/cast256.aes
 
 ## IBM's `DES' block cipher, by Feistel, Coppersmith, and others.
 BLKCS                  += des des3
-libsymm_la_SOURCES     += des-base.h $(precomp)/des-tab.c
-PRECOMPS               += $(precomp)/des-tab.c
+libsymm_la_SOURCES     += des-base.h
+nodist_libsymm_la_SOURCES += ../precomp/symm/des-tab.c
+PRECOMPS               += $(precomp)/symm/des-tab.c
 PRECOMP_PROGS          += des-mktab
 if !CROSS_COMPILING
-$(precomp)/des-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/des-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./des-mktab >$(precomp)/symm/des-tab.c.new && \
+               mv $(precomp)/symm/des-tab.c.new $(precomp)/symm/des-tab.c
 endif
 
 ## Rivest's `DESX' variant, with pre- and post-whitening.
@@ -148,15 +150,15 @@ BLKCS                     += idea
 
 ## IBM's `MARS' block cipher.
 BLKCS                  += mars
-libsymm_la_SOURCES     += $(precomp)/mars-tab.c
-PRECOMPS               += $(precomp)/mars-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/mars-tab.c
+PRECOMPS               += $(precomp)/symm/mars-tab.c
 PRECOMP_PROGS          += mars-mktab
 if !CROSS_COMPILING
-$(precomp)/mars-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/mars-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./mars-mktab >$(precomp)/symm/mars-tab.c.new && \
+               mv $(precomp)/symm/mars-tab.c.new $(precomp)/symm/mars-tab.c
 endif
 mars.$t: t/mars
 EXTRA_DIST             += t/mars.aes
@@ -180,15 +182,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
-libsymm_la_SOURCES     += $(precomp)/rijndael-tab.c
-PRECOMPS               += $(precomp)/rijndael-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/rijndael-tab.c
+PRECOMPS               += $(precomp)/symm/rijndael-tab.c
 PRECOMP_PROGS          += rijndael-mktab
 if !CROSS_COMPILING
-$(precomp)/rijndael-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/rijndael-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./rijndael-mktab >$(precomp)/symm/rijndael-tab.c.new && \
+               mv $(precomp)/symm/rijndael-tab.c.new \
+                       $(precomp)/symm/rijndael-tab.c
 endif
 rijndael.$t: t/rijndael
 EXTRA_DIST             += t/rijndael.aes
@@ -201,16 +204,17 @@ t/rijndael: t/rijndael.aes
 
 ## Massey's `SAFER' block ciphers.
 BLKCS                  += safer safersk
-libsymm_la_SOURCES     += $(precomp)/safer-tab.c
-PRECOMPS               += $(precomp)/safer-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/safer-tab.c
+PRECOMPS               += $(precomp)/symm/safer-tab.c
 PRECOMP_PROGS          += safer-mktab
 STUBS_HDR              += SAFER-SK,safersk,safer
 if !CROSS_COMPILING
-$(precomp)/safer-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/safer-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./safer-mktab >$(precomp)/symm/safer-tab.c.new && \
+               mv $(precomp)/symm/safer-tab.c.new \
+                       $(precomp)/symm/safer-tab.c
 endif
 
 ## Anderson, Biham and Knudsen's `Serpent' block cipher.
@@ -234,15 +238,16 @@ libsymm_la_SOURCES        += skipjack-tab.c
 
 ## Daemen and Rijmen's `Square' block cipher.
 BLKCS                  += square
-libsymm_la_SOURCES     += $(precomp)/square-tab.c
-PRECOMPS               += $(precomp)/square-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/square-tab.c
+PRECOMPS               += $(precomp)/symm/square-tab.c
 PRECOMP_PROGS          += square-mktab
 if !CROSS_COMPILING
-$(precomp)/square-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/square-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./square-mktab >$(precomp)/symm/square-tab.c.new && \
+               mv $(precomp)/symm/square-tab.c.new \
+                       $(precomp)/symm/square-tab.c
 endif
 
 ## Wheeler and Needham's `TEA' and `XTEA' block ciphers.
@@ -251,15 +256,16 @@ BLKCS                     += tea xtea
 ## Schneier, Kelsey, Whiting, Wagner, Hall and Ferguson's `Twofish' block
 ## cipher.
 BLKCS                  += twofish
-libsymm_la_SOURCES     += $(precomp)/twofish-tab.c
-PRECOMPS               += $(precomp)/twofish-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/twofish-tab.c
+PRECOMPS               += $(precomp)/symm/twofish-tab.c
 PRECOMP_PROGS          += twofish-mktab
 if !CROSS_COMPILING
-$(precomp)/twofish-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/twofish-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./twofish-mktab >$(precomp)/symm/twofish-tab.c.new && \
+               mv $(precomp)/symm/twofish-tab.c.new \
+                       $(precomp)/symm/twofish-tab.c
 endif
 twofish.$t: t/twofish
 EXTRA_DIST             += t/twofish.aes
@@ -316,29 +322,33 @@ STUBS_HDR         += SHA-384,sha384,sha512
 
 ## Anderson and Biham's `Tiger' hash function.
 HASHES                 += tiger
-libsymm_la_SOURCES     += tiger-base.h $(precomp)/tiger-tab.c
-PRECOMPS               += $(precomp)/tiger-tab.c
+libsymm_la_SOURCES     += tiger-base.h
+nodist_libsymm_la_SOURCES += ../precomp/symm/tiger-tab.c
+PRECOMPS               += $(precomp)/symm/tiger-tab.c
 PRECOMP_PROGS          += tiger-mktab
 if !CROSS_COMPILING
-$(precomp)/tiger-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/tiger-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./tiger-mktab >$(precomp)/symm/tiger-tab.c.new && \
+               mv $(precomp)/symm/tiger-tab.c.new \
+                       $(precomp)/symm/tiger-tab.c
 endif
 
 ## Barreto and Rijmen's `Whirlpool' hash function.
 HASHES                 += whirlpool whirlpool256
-libsymm_la_SOURCES     += $(precomp)/whirlpool-tab.c
-PRECOMPS               += $(precomp)/whirlpool-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/whirlpool-tab.c
+PRECOMPS               += $(precomp)/symm/whirlpool-tab.c
 PRECOMP_PROGS          += whirlpool-mktab
 STUBS_HDR              += Whirlpool-256,whirlpool256,whirlpool
 if !CROSS_COMPILING
-$(precomp)/whirlpool-tab.c:
-       $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/whirlpool-tab.c:
+       $(AM_V_at)$(MKDIR_P) $(precomp)/symm
        $(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
+       $(AM_V_GEN)./whirlpool-mktab \
+                       >$(precomp)/symm/whirlpool-tab.c.new && \
+               mv $(precomp)/symm/whirlpool-tab.c.new \
+                       $(precomp)/symm/whirlpool-tab.c
 endif
 
 ## Bellare, Canetti and Krawczyk's `HMAC' mode for message authentication.
@@ -369,6 +379,52 @@ TESTS                      += seal.$t
 EXTRA_DIST             += t/seal
 ALL_CIPHERS            += seal
 
+## Bernstein's `Salsa20' stream cipher.  Most of the test vectors come from
+## the eSTREAM project, captured by the Internet Archive's Wayback Machine at
+##
+##   http://web.archive.org/web/20070814004154/http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20.tar.gz?view=tar
+##
+## and automatically converted into the format we want.
+EXTRA_DIST             += salsa20-tvconv
+pkginclude_HEADERS     += salsa20.h salsa20-core.h
+libsymm_la_SOURCES     += salsa20.c
+TESTS                  += salsa20.$t
+ALL_CIPHERS            += salsa20 salsa2012 salsa208
+ALL_CIPHERS            += xsalsa20 xsalsa2012 xsalsa208
+STUBS_HDR              += Salsa20/12,salsa2012,salsa20
+STUBS_HDR              += Salsa20/8,salsa208,salsa20
+STUBS_HDR              += XSalsa20,xsalsa20,salsa20
+STUBS_HDR              += XSalsa20/12,xsalsa2012,salsa20
+STUBS_HDR              += XSalsa20/8,xsalsa208,salsa20
+EXTRA_DIST             += t/salsa20
+MAINTAINERCLEANFILES   += t/salsa20
+salsa20.$t: t/salsa20
+SALSA20_ESTREAM_TV      = t/salsa20.estream
+SALSA20_ESTREAM_TV     += t/salsa2012.estream
+SALSA20_ESTREAM_TV     += t/salsa208.estream
+EXTRA_DIST             += t/salsa20.local $(SALSA20_ESTREAM_TV)
+t/salsa20: salsa20-tvconv t/salsa20.local $(SALSA20_ESTREAM_TV)
+       $(AM_V_GEN)cd $(srcdir) && \
+               { echo "### GENERATED by salsa20-tvconv" && \
+                 cat t/salsa20.local && \
+                 ./salsa20-tvconv $(SALSA20_ESTREAM_TV); \
+               } >t/salsa20.new && \
+               mv t/salsa20.new t/salsa20
+
+## Bernstein's `ChaCha' stream cipher.
+pkginclude_HEADERS     += chacha.h chacha-core.h
+libsymm_la_SOURCES     += chacha.c
+TESTS                  += chacha.$t
+EXTRA_DIST             += t/chacha
+ALL_CIPHERS            += chacha20 chacha12 chacha8
+ALL_CIPHERS            += xchacha20 xchacha12 xchacha8
+STUBS_HDR              += ChaCha20,chacha20,chacha
+STUBS_HDR              += ChaCha12,chacha12,chacha
+STUBS_HDR              += ChaCha8,chacha8,chacha
+STUBS_HDR              += XChaCha20,xchacha20,chacha
+STUBS_HDR              += XChaCha12,xchacha12,chacha
+STUBS_HDR              += XChaCha8,xchacha8,chacha
+
 ###--------------------------------------------------------------------------
 ### Autogenerated mode implementations.