## we generate it using `multigen'. Unfortunately, this needs to be done
## at the Automake level, which causes some interesting bootstrapping
## problems.
+##
+## Of course, now that we have this machinery for the complicated modes
+## generation, we might as well use it for simpler things.
include modes.am
+include stubs.am
EXTRA_DIST += modes.am.in modes.am
+EXTRA_DIST += stubs.am.in stubs.am
MAINTAINERCLEANFILES += $(srcdir)/modes.am
+MAINTAINERCLEANFILES += $(srcdir)/stubs.am
## Generate the lists.
$(srcdir)/modes.am: modes.am.in Makefile.am
hashmode="$(HASHMODES)" \
hashciphermode="$(HASHCIPHERMODES)" \
hashmacmode="$(HASHMACMODES)"
+$(srcdir)/stubs.am: stubs.am.in Makefile.am
+ $(AM_V_GEN)$(multigen) -g $(srcdir)/stubs.am.in $(srcdir)/stubs.am \
+ descr,hname,base="$(STUBS_HDR)" cname="$(STUBS_SRC)"
## Initialize lists of known classes.
ALL_CIPHERS = $(CIPHER_MODES)
ALL_HASHES = $(HASHES)
ALL_MACS = $(MAC_MODES)
+## Stub headers and sources.
+STUBS_HDR =
+STUBS_SRC =
+
###--------------------------------------------------------------------------
### Block ciphers.
libsymm_la_SOURCES += $(precomp)/safer-tab.c
PRECOMPS += $(precomp)/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)
## The National Security Agency's `SHA-2' suite.
HASHES += sha224 sha256
HASHES += sha384 sha512
+STUBS_HDR += SHA-224,sha224,sha256
+STUBS_HDR += SHA-384,sha384,sha512
## Anderson and Biham's `Tiger' hash function.
HASHES += tiger
libsymm_la_SOURCES += $(precomp)/whirlpool-tab.c
PRECOMPS += $(precomp)/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)
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
+
###--------------------------------------------------------------------------
### Autogenerated mode implementations.
$(GENMODES_H): modes/gen-stamp
###--------------------------------------------------------------------------
+### Autogenerated stub headers.
+
+## The master stamp file.
+EXTRA_DIST += stub.h.in
+EXTRA_DIST += stubs.gen-stamp
+MAINTAINERCLEANFILES += stubs.gen-stamp
+stubs.gen-stamp: Makefile.am
+ $(AM_V_at)$(MKDIR_P) $(srcdir)/stubs
+ $(AM_V_GEN)$(multigen) -g $(srcdir)/stub.h.in \
+ $(srcdir)/@name.h descr,name,base="$(STUBS_HDR)"
+ $(AM_V_GEN)$(multigen) -g $(srcdir)/stub.c.in \
+ $(srcdir)/@name.c name="$(STUBS_SRC)"
+ $(AM_V_at)touch $(srcdir)/stubs.gen-stamp
+
+## Generated stub headers.
+BUILT_SOURCES += $(STUB_H) $(STUB_C)
+MAINTAINERCLEANFILES += $(STUB_H) $(STUB_C)
+pkginclude_HEADERS += $(STUB_H)
+$(STUB_H) $(STUB_C): stubs.gen-stamp
+
+###--------------------------------------------------------------------------
### Tables of classes for encryption, hashing, and message authentication.
## The skeleton for the class tables.