+## 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)
+