+## 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
+if CPUFAM_X86
+libsymm_la_SOURCES += salsa20-x86ish-sse2.S
+endif
+if CPUFAM_AMD64
+libsymm_la_SOURCES += salsa20-x86ish-sse2.S
+endif
+if CPUFAM_ARMEL
+libsymm_la_SOURCES += salsa20-arm-neon.S
+endif
+if CPUFAM_ARM64
+libsymm_la_SOURCES += salsa20-arm64.S
+endif
+TESTS += salsa20.t$(EXEEXT)
+ALL_CIPHERS += salsa20 salsa2012 salsa208
+ALL_CIPHERS += salsa20-ietf salsa2012-ietf salsa208-ietf
+ALL_CIPHERS += xsalsa20 xsalsa2012 xsalsa208
+STUBS_HDR += Salsa20/12,salsa2012,salsa20
+STUBS_HDR += Salsa20/8,salsa208,salsa20
+STUBS_HDR += Salsa20-IETF,salsa20-ietf,salsa20
+STUBS_HDR += Salsa20/12-IETF,salsa2012-ietf,salsa20
+STUBS_HDR += Salsa20/8-IETF,salsa208-ietf,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.log: 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
+if CPUFAM_X86
+libsymm_la_SOURCES += chacha-x86ish-sse2.S
+endif
+if CPUFAM_AMD64
+libsymm_la_SOURCES += chacha-x86ish-sse2.S
+endif
+if CPUFAM_ARMEL
+libsymm_la_SOURCES += chacha-arm-neon.S
+endif
+if CPUFAM_ARM64
+libsymm_la_SOURCES += chacha-arm64.S
+endif
+TESTS += chacha.t$(EXEEXT)
+EXTRA_DIST += t/chacha
+ALL_CIPHERS += chacha20 chacha12 chacha8
+ALL_CIPHERS += chacha20-ietf chacha12-ietf chacha8-ietf
+ALL_CIPHERS += xchacha20 xchacha12 xchacha8
+STUBS_HDR += ChaCha20,chacha20,chacha
+STUBS_HDR += ChaCha12,chacha12,chacha
+STUBS_HDR += ChaCha8,chacha8,chacha
+STUBS_HDR += ChaCha20-IETF,chacha20-ietf,chacha
+STUBS_HDR += ChaCha12-IETF,chacha12-ietf,chacha
+STUBS_HDR += ChaCha8-IETF,chacha8-ietf,chacha
+STUBS_HDR += XChaCha20,xchacha20,chacha
+STUBS_HDR += XChaCha12,xchacha12,chacha
+STUBS_HDR += XChaCha8,xchacha8,chacha
+
+## Bernstein's `Poly1305' message authentication code.
+pkginclude_HEADERS += poly1305.h
+libsymm_la_SOURCES += poly1305.c
+TESTS += poly1305.t$(EXEEXT)
+TESTS += poly1305-p11.t$(EXEEXT)
+EXTRA_DIST += t/poly1305 t/poly1305.slow
+
+check_PROGRAMS += poly1305-p11.t
+poly1305_p11_t_SOURCES = poly1305.c
+poly1305_p11_t_CPPFLAGS = $(AM_CPPFLAGS) -DTEST_RIG -DSRCDIR="\"$(srcdir)\""
+poly1305_p11_t_CPPFLAGS += -DPOLY1305_IMPL=11
+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)
+