X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/ce7001d8ef72928ff966e3c9da1c62ce1d00d2c0..8c5956c14f5834a072e1a9345ae1f356b14164ca:/symm/Makefile.am diff --git a/symm/Makefile.am b/symm/Makefile.am index 6a0683cb..68d9267a 100644 --- a/symm/Makefile.am +++ b/symm/Makefile.am @@ -32,6 +32,11 @@ nodist_libsymm_la_SOURCES = TEST_LIBS = libsymm.la +noinst_LTLIBRARIES += libsymmtest.la +libsymmtest_la_SOURCES = +libsymmtest_la_CFLAGS = $(AM_CFLAGS) -DSRCDIR=\"$(srcdir)\" +TEST_LIBS += libsymmtest.la + VPATH += $(srcdir)/modes ###-------------------------------------------------------------------------- @@ -63,6 +68,8 @@ $(srcdir)/modes.am: modes.am.in Makefile.am blkc="$(BLKCS)" \ blkcmode="$(BLKCMODES)" \ blkcciphermode="$(BLKCCIPHERMODES)" \ + blkcaeadmode="$(BLKCAEADMODES)" \ + blkcmacmode="$(BLKCMACMODES)" \ hash="$(HASHES)" \ hashmode="$(HASHMODES)" \ hashciphermode="$(HASHCIPHERMODES)" \ @@ -73,6 +80,7 @@ $(srcdir)/stubs.am: stubs.am.in Makefile.am ## Initialize lists of known classes. ALL_CIPHERS = $(CIPHER_MODES) +ALL_AEADS = $(AEAD_MODES) ALL_HASHES = $(HASHES) ALL_MACS = $(MAC_MODES) @@ -89,6 +97,12 @@ BLKCMODES = BLKCCIPHERMODES = BLKCMODES += $(BLKCCIPHERMODES) +BLKCAEADMODES = +BLKCMODES += $(BLKCAEADMODES) + +BLKCMACMODES = +BLKCMODES += $(BLKCMACMODES) + ## A tool for translating the AES-contest test vectors into a form our test ## rigs understand. EXTRA_DIST += aes-trans @@ -119,13 +133,14 @@ endif BLKCS += cast128 cast256 libsymm_la_SOURCES += cast-s.c cast-sk.c cast-base.h cast256.log: t/cast256 -EXTRA_DIST += t/cast256.aes +EXTRA_DIST += t/cast256.aes t/cast256.local MAINTAINERCLEANFILES += $(srcdir)/t/cast256 -t/cast256: t/cast256.aes - $(AM_V_GEN)$(srcdir)/aes-trans CAST256 \ - <$(srcdir)/t/cast256.aes \ - >$(srcdir)/t/cast256.new && \ - mv $(srcdir)/t/cast256.new $(srcdir)/t/cast256 +t/cast256: t/cast256.aes t/cast256.local + $(AM_V_GEN)cd $(srcdir) && \ + { ./aes-trans CAST256 t/cast256.new && \ + mv t/cast256.new t/cast256 ## IBM's `DES' block cipher, by Feistel, Coppersmith, and others. BLKCS += des des3 @@ -161,13 +176,14 @@ $(precomp)/symm/mars-tab.c: mv $(precomp)/symm/mars-tab.c.new $(precomp)/symm/mars-tab.c endif mars.log: t/mars -EXTRA_DIST += t/mars.aes +EXTRA_DIST += t/mars.aes t/mars.local MAINTAINERCLEANFILES += $(srcdir)/t/mars -t/mars: t/mars.aes - $(AM_V_GEN)$(srcdir)/aes-trans Mars \ - <$(srcdir)/t/mars.aes \ - >$(srcdir)/t/mars.new && \ - mv $(srcdir)/t/mars.new $(srcdir)/t/mars +t/mars: t/mars.aes t/mars.local + $(AM_V_GEN)cd $(srcdir) && \ + { ./aes-trans Mars t/mars.new && \ + mv t/mars.new t/mars ## Daemen, Peeters, Van Assche and Rijmen's `Noekeon'. BLKCS += noekeon @@ -208,13 +224,14 @@ $(precomp)/symm/rijndael-tab.c: $(precomp)/symm/rijndael-tab.c endif rijndael.log: t/rijndael -EXTRA_DIST += t/rijndael.aes +EXTRA_DIST += t/rijndael.aes t/rijndael.local MAINTAINERCLEANFILES += $(srcdir)/t/rijndael -t/rijndael: t/rijndael.aes - $(AM_V_GEN)$(srcdir)/aes-trans Rijndael \ - <$(srcdir)/t/rijndael.aes \ - >$(srcdir)/t/rijndael.new && \ - mv $(srcdir)/t/rijndael.new $(srcdir)/t/rijndael +t/rijndael: t/rijndael.aes t/rijndael.local + $(AM_V_GEN)cd $(srcdir) && \ + { ./aes-trans Rijndael t/rijndael.new && \ + mv t/rijndael.new t/rijndael ## Massey's `SAFER' block ciphers. BLKCS += safer safersk @@ -238,13 +255,14 @@ libsymm_la_SOURCES += serpent-sbox.h check_PROGRAMS += serpent-check TESTS += serpent-check serpent.log: t/serpent -EXTRA_DIST += t/serpent.aes +EXTRA_DIST += t/serpent.aes t/serpent.local MAINTAINERCLEANFILES += $(srcdir)/t/serpent -t/serpent: t/serpent.aes - $(AM_V_GEN)$(srcdir)/aes-trans Serpent -v rev=1 \ - <$(srcdir)/t/serpent.aes \ - >$(srcdir)/t/serpent.new && \ - mv $(srcdir)/t/serpent.new $(srcdir)/t/serpent +t/serpent: t/serpent.aes t/serpent.local + $(AM_V_GEN)cd $(srcdir) && \ + { ./aes-trans Serpent -v rev=1 t/serpent.new && \ + mv t/serpent.new t/serpent ## The National Security Agency's `Skipjack' block cipher. You don't want to ## use this. @@ -283,13 +301,14 @@ $(precomp)/symm/twofish-tab.c: $(precomp)/symm/twofish-tab.c endif twofish.log: t/twofish -EXTRA_DIST += t/twofish.aes +EXTRA_DIST += t/twofish.aes t/twofish.local MAINTAINERCLEANFILES += $(srcdir)/t/twofish -t/twofish: t/twofish.aes - $(AM_V_GEN)$(srcdir)/aes-trans Twofish \ - <$(srcdir)/t/twofish.aes \ - >$(srcdir)/t/twofish.new && \ - mv $(srcdir)/t/twofish.new $(srcdir)/t/twofish +t/twofish: t/twofish.aes t/twofish.local + $(AM_V_GEN)cd $(srcdir) && \ + { ./aes-trans Twofish t/twofish.new && \ + mv t/twofish.new t/twofish ## The old NIST modes for DES. BLKCCIPHERMODES += cbc cfb ecb ofb @@ -297,6 +316,29 @@ BLKCCIPHERMODES += cbc cfb ecb ofb ## Counter mode. BLKCCIPHERMODES += counter +## CMAC mode. +BLKCMACMODES += cmac pmac1 + +## Various AEAD modes. +pkginclude_HEADERS += ocb.h +BLKCAEADMODES += ccm eax gcm ocb1 ocb3 +libsymm_la_SOURCES += ccm.c gcm.c ocb.c +if CPUFAM_X86 +libsymm_la_SOURCES += gcm-x86ish-pclmul.S +endif +if CPUFAM_AMD64 +libsymm_la_SOURCES += gcm-x86ish-pclmul.S +endif +if CPUFAM_ARMEL +libsymm_la_SOURCES += gcm-arm-crypto.S +endif +if CPUFAM_ARM64 +libsymm_la_SOURCES += gcm-arm64-pmull.S +endif + +TESTS += gcm.t$(EXEEXT) +EXTRA_DIST += t/gcm + ###-------------------------------------------------------------------------- ### Hash functions. @@ -555,6 +597,32 @@ poly1305_p11_t_LDFLAGS = $(TEST_LDFLAGS) poly1305_p11_t_LDADD = $(TEST_LIBS) $(top_builddir)/libcatacomb.la poly1305_p11_t_LDADD += $(mLib_LIBS) $(CATACOMB_LIBS) $(LIBS) +## Combining Salsa20/ChaCha with Poly1305. +pkginclude_HEADERS += latinpoly.h latinpoly-def.h +libsymm_la_SOURCES += latinpoly.c chacha-poly1305.c salsa20-poly1305.c +libsymmtest_la_SOURCES += latinpoly-test.c latinpoly-test.h + +ALL_AEADS += chacha20-poly1305 salsa20-poly1305 +ALL_AEADS += chacha12-poly1305 salsa2012-poly1305 +ALL_AEADS += chacha8-poly1305 salsa208-poly1305 +ALL_AEADS += chacha20-naclbox salsa20-naclbox +ALL_AEADS += chacha12-naclbox salsa2012-naclbox +ALL_AEADS += chacha8-naclbox salsa208-naclbox +STUBS_HDR += ChaCha20-Poly1305,chacha20-poly1305,latinpoly +STUBS_HDR += ChaCha12-Poly1305,chacha12-poly1305,latinpoly +STUBS_HDR += ChaCha8-Poly1305,chacha8-poly1305,latinpoly +STUBS_HDR += Salsa20-Poly1305,salsa20-poly1305,latinpoly +STUBS_HDR += Salsa20/12-Poly1305,salsa2012-poly1305,latinpoly +STUBS_HDR += Salsa20/8-Poly1305,salsa208-poly1305,latinpoly +STUBS_HDR += ChaCha20-NaClBox,chacha20-naclbox,latinpoly +STUBS_HDR += ChaCha12-NaClBox,chacha12-naclbox,latinpoly +STUBS_HDR += ChaCha8-NaClBox,chacha8-naclbox,latinpoly +STUBS_HDR += Salsa20-NaClBox,salsa20-naclbox,latinpoly +STUBS_HDR += Salsa20/12-NaClBox,salsa2012-naclbox,latinpoly +STUBS_HDR += Salsa20/8-NaClBox,salsa208-naclbox,latinpoly +TESTS += chacha-poly1305.t$(EXEEXT) +TESTS += salsa20-poly1305.t$(EXEEXT) + ###-------------------------------------------------------------------------- ### Autogenerated mode implementations. @@ -593,6 +661,9 @@ MAINTAINERCLEANFILES += $(GENMODES_H) pkginclude_HEADERS += $(GENMODES_H) $(GENMODES_H): modes/gen-stamp +## Additional test machinery. +libsymmtest_la_SOURCES += modes-test.c modes-test.h + ###-------------------------------------------------------------------------- ### Autogenerated stub headers. @@ -628,6 +699,15 @@ gciphertab.c: gthingtab.c.in Makefile.am $(AM_V_GEN)$(multigen) -g $(srcdir)/gthingtab.c.in gciphertab.c \ what=gcipher cls=gccipher thing="$(ALL_CIPHERS)" +## Table of AEAD classes. +pkginclude_HEADERS += gaead.h +CLEANFILES += gaeadtab.c +libsymm_la_SOURCES += gaead.c +nodist_libsymm_la_SOURCES += gaeadtab.c +gaeadtab.c: gthingtab.c.in Makefile.am + $(AM_V_GEN)$(multigen) -g $(srcdir)/gthingtab.c.in gaeadtab.c \ + what=gaead cls=gcaead thing="$(ALL_AEADS)" + ## Table of hash classes. pkginclude_HEADERS += ghash.h ghash-def.h CLEANFILES += ghashtab.c @@ -650,9 +730,13 @@ gmactab.c: gthingtab.c.in Makefile.am ## Run the test programs. TESTS += $(SYMM_TESTS) EXTRA_DIST += $(SYMM_TEST_FILES) +EXTRA_DIST += $(REGRESSION_TEST_FILES) -## A piece of sample text for round-trip testing encryption modes. -EXTRA_DIST += daftstory.h +t/modes/%.regress: + $(MAKE) modes/$*.t && \ + mkdir -p $(srcdir)/t/modes/ && \ + modes/$*.t -o$(srcdir)/$@.new && \ + mv $(srcdir)/$@.new $(srcdir)/$@ ## Clean the debris from the `modes' subdirectory. CLEANFILES += modes/*.to modes/*.t$(EXEEXT)