### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
### MA 02111-1307, USA.
-###--------------------------------------------------------------------------
-### Miscellaneous useful definitions.
-
-## Some convenient abbreviations for file suffixes.
-e = $(EXEEXT)
-o = $(OBJEXT)
-t = t$e
-
-## Installation directories.
-archincludedir = $(pkglibdir)/include
-
-###--------------------------------------------------------------------------
-### Initial values of common variables.
+include $(top_srcdir)/vars.am
+ACLOCAL_AMFLAGS = -Im4
SUBDIRS =
-EXTRA_DIST =
-CLEANFILES =
-DISTCLEANFILES =
-MAINTAINERCLEANFILES =
-SUFFIXES =
-TESTS =
-BUILT_SOURCES =
-
-bin_PROGRAMS =
-noinst_PROGRAMS =
-lib_LTLIBRARIES =
-noinst_LTLIBRARIES =
-pkginclude_HEADERS =
-nodist_pkginclude_HEADERS =
-archinclude_HEADERS =
-nodist_archinclude_HEADERS =
-dist_man_MANS =
-
-###--------------------------------------------------------------------------
-### Standard configuration substitutions.
-
-## Substitute tags in files.
-confsubst = $(top_srcdir)/config/confsubst
-EXTRA_DIST += config/confsubst
-
-SUBSTITUTIONS = \
- prefix=$(prefix) exec_prefix=$(exec_prefix) \
- libdir=$(libdir) includedir=$(includedir) \
- PACKAGE=$(PACKAGE) VERSION=$(VERSION) \
- CATACOMB_LIBS="$(CATACOMB_LIBS)"
-
-V_SUBST = $(V_SUBST_$(V))
-V_SUBST_ = $(V_SUBST_$(AM_DEFAULT_VERBOSITY))
-V_SUBST_0 = @echo " SUBST $@";
-SUBST = $(V_SUBST)$(confsubst)
-
###--------------------------------------------------------------------------
-### The main library.
+### Top-level library.
-lib_LTLIBRARIES += libcatacomb.la
-libcatacomb_la_LIBADD = $(CATACOMB_LIBS) $(mLib_LIBS)
-libcatacomb_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO)
+lib_LTLIBRARIES = libcatacomb.la
+libcatacomb_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) \
+ -no-undefined
libcatacomb_la_SOURCES =
-nodist_libcatacomb_la_SOURCES =
-
-###--------------------------------------------------------------------------
-### Basic utilities.
-
-## The locked-memory arena.
-pkginclude_HEADERS += arena.h
-libcatacomb_la_SOURCES += arena.c
-
-## Constant-type operations.
-pkginclude_HEADERS += ct.h
-libcatacomb_la_SOURCES += ct.c
-
-## Acceptable key-size descriptions.
-pkginclude_HEADERS += keysz.h
-libcatacomb_la_SOURCES += keysz.c keysz-conv.c
-
-## System-level memory locking.
-pkginclude_HEADERS += lmem.h
-libcatacomb_la_SOURCES += lmem.c
-
-## Clearing secrets from memory.
-pkginclude_HEADERS += paranoia.h
-
-###--------------------------------------------------------------------------
-### Main multiprecision integer library.
-
-## This library is unfortunately intertwined with some of the code generation
-## programs, so we must be rather careful. The important bits of the maths
-## library needed by these programs is separated out into `libmpbase'. There
-## is work going on to fix this unpleasant situation by generating the
-## relevant files from Python scripts rather than C programs, using
-## information gathered by `configure'.
-noinst_LTLIBRARIES += libmpbase.la
-libcatacomb_la_LIBADD += libmpbase.la
-libmpbase_la_LIBADD = $(mLib_LIBS)
-libmpbase_la_SOURCES =
-$(libmpbase_la_OBJECTS): mptypes.h
-
-## Additional buffer I/O functions for mathematical objects.
-pkginclude_HEADERS += buf.h
-libcatacomb_la_SOURCES += buf.c
-
-## Infrastructure for fast exponentiation.
-pkginclude_HEADERS += exp.h
-libcatacomb_la_SOURCES += exp.c
-
-## Main user-visible multiprecision arithmetic.
-pkginclude_HEADERS += mp.h
-libmpbase_la_SOURCES += mp-arith.c
-TESTS += mp-arith.$t
-libmpbase_la_SOURCES += mp-const.c
-libcatacomb_la_SOURCES += mp-exp.c mp-exp.h
-libcatacomb_la_SOURCES += mp-gcd.c
-TESTS += mp-gcd.$t
-libmpbase_la_SOURCES += mp-io.c
-libcatacomb_la_SOURCES += mp-jacobi.c
-TESTS += mp-jacobi.$t
-libmpbase_la_SOURCES += mp-mem.c
-libmpbase_la_SOURCES += mp-misc.c
-libcatacomb_la_SOURCES += mp-modexp.c
-TESTS += mp-modexp.$t
-libcatacomb_la_SOURCES += mp-modsqrt.c
-TESTS += mp-modsqrt.$t
-libcatacomb_la_SOURCES += mp-sqrt.c
-TESTS += mp-sqrt.$t
-libcatacomb_la_SOURCES += mp-test.c
-EXTRA_DIST += tests/mp
-
-## Computing Fibonacci numbers.
-pkginclude_HEADERS += mp-fibonacci.h
-libcatacomb_la_SOURCES += mp-fibonacci.c
-TESTS += mp-fibonacci.$t
-
-## Special memory allocation for multiprecision integers.
-pkginclude_HEADERS += mparena.h
-libmpbase_la_SOURCES += mparena.c
-
-## Barrett reduction, an efficient method for modular reduction.
-pkginclude_HEADERS += mpbarrett.h
-libcatacomb_la_SOURCES += mpbarrett.c
-TESTS += mpbarrett.$t
-libcatacomb_la_SOURCES += mpbarrett-exp.c mpbarrett-mexp.c mpbarrett-exp.h
-TESTS += mpbarrett-exp.$t mpbarrett-mexp.$t
-EXTRA_DIST += tests/mpbarrett
-
-## Solving congruences using the Chinese Remainder Theorem.
-pkginclude_HEADERS += mpcrt.h
-libcatacomb_la_SOURCES += mpcrt.c
-TESTS += mpcrt.$t
-EXTRA_DIST += tests/mpcrt
-
-## Conversions between machine-native and multiprecision integers.
-pkginclude_HEADERS += mpint.h
-libcatacomb_la_SOURCES += mpint.c
-TESTS += mpint.$t
-EXTRA_DIST += tests/mpint
-
-## Table of upper and lower limits of various types of machine integers, as
-## multiprecision integers.
-nodist_archinclude_HEADERS += mplimits.h
-nodist_libcatacomb_la_SOURCES += mplimits.c
-CLEANFILES += mplimits.h mplimits.c
-noinst_PROGRAMS += genlimits
-genlimits_LDADD = libmpbase.la
-mplimits.c: genlimits$e
- $(AM_V_GEN)./genlimits c >mplimits.c.new && \
- mv mplimits.c.new mplimits.c
-mplimits.h: genlimits$e
- $(AM_V_GEN)./genlimits h >mplimits.h.new && \
- mv mplimits.h.new mplimits.h
-$(genlimits_OBJECTS): mptypes.h
-mplimits.lo: mplimits.h
-
-## Montgomery reduction, a clever method for modular arithmetic.
-pkginclude_HEADERS += mpmont.h
-libcatacomb_la_SOURCES += mpmont.c
-TESTS += mpmont.$t
-libcatacomb_la_SOURCES += mpmont-exp.c mpmont-mexp.c mpmont-exp.h
-TESTS += mpmont-exp.$t mpmont-mexp.$t
-EXTRA_DIST += tests/mpmont
-
-## Efficient multiplication of many small numbers.
-pkginclude_HEADERS += mpmul.h
-libcatacomb_la_SOURCES += mpmul.c
-TESTS += mpmul.$t
-
-## Generating random numbers.
-pkginclude_HEADERS += mprand.h
-libcatacomb_la_SOURCES += mprand.c
-
-## Efficient reduction modulo numbers with conveninent binary
-## representations.
-pkginclude_HEADERS += mpreduce.h
-libcatacomb_la_SOURCES += mpreduce.c mpreduce-exp.h
-TESTS += mpreduce.$t
-EXTRA_DIST += tests/mpreduce
-
-## Iteratiion over the bianry representation of multiprecision integers.
-pkginclude_HEADERS += mpscan.h
-libmpbase_la_SOURCES += mpscan.c
-
-## Conversion between multiprecision integers and their textual
-## representations.
-pkginclude_HEADERS += mptext.h
-libmpbase_la_SOURCES += mptext.c
-TESTS += mptext.$t
-libcatacomb_la_SOURCES += mptext-dstr.c
-libcatacomb_la_SOURCES += mptext-file.c
-libcatacomb_la_SOURCES += mptext-len.c
-libmpbase_la_SOURCES += mptext-string.c
-EXTRA_DIST += tests/mptext
-
-## Basic types used in the representation of multiprecision integers.
-nodist_archinclude_HEADERS += mptypes.h
-BUILT_SOURCES += mptypes.h
-CLEANFILES += mptypes.h
-noinst_PROGRAMS += mptypes
-mptypes.h: mptypes$e
- $(AM_V_GEN)./mptypes >mptypes.h.new && mv mptypes.h.new mptypes.h
-
-## Low-level multiprecision arithmetic.
-pkginclude_HEADERS += mpx.h bitops.h mpw.h
-libmpbase_la_SOURCES += mpx.c
-TESTS += mpx.$t
-libmpbase_la_SOURCES += karatsuba.h mpx-kmul.c mpx-ksqr.c
-TESTS += mpx-kmul.$t mpx-ksqr.$t
-noinst_PROGRAMS += bittest
-TESTS += bittest
-EXTRA_DIST += tests/mpx
-
-## A quick-and-dirty parser, used for parsing descriptions of groups, fields,
-## etc.
-pkginclude_HEADERS += rho.h
-libcatacomb_la_SOURCES += rho.c
-TESTS += rho.$t
-
-## Pollard's `rho' algorithm for determining discrete logarithms.
-pkginclude_HEADERS += qdparse.h
-libcatacomb_la_SOURCES += qdparse.c
-
-###--------------------------------------------------------------------------
-### Prime number checking, searching, and related jobs.
-
-## Generating Lim--Lee groups, i.e., unit groups of finite fields without
-## small subgroups (except for the obvious ones).
-pkginclude_HEADERS += limlee.h
-libcatacomb_la_SOURCES += limlee.c
-
-## A table of small prime numbers.
-nodist_pkginclude_HEADERS += primetab.h
-nodist_libcatacomb_la_SOURCES += primetab.c
-CLEANFILES += primetab.h primetab.c
-BUILT_SOURCES += primetab.h primetab.c
-noinst_PROGRAMS += genprimes
-genprimes_LDADD = $(mLib_LIBS)
-primetab.h: primetab.c
-primetab.c: genprimes$e
- $(AM_V_GEN)./genprimes -hprimetab.h -cprimetab.c \
- -sCATACOMB_PRIMETAB_H \
- -n256 -t"unsigned short" -iprimetab
-
-## Filtering candidate prime numbers by checking for small factors
-## efficiently.
-pkginclude_HEADERS += pfilt.h
-libcatacomb_la_SOURCES += pfilt.c
-
-## Generating prime numbers (and other kinds of numbers which need searching
-## for).
-pkginclude_HEADERS += pgen.h
-libcatacomb_la_SOURCES += pgen.c
-libcatacomb_la_SOURCES += pgen-gcd.c
-libcatacomb_la_SOURCES += pgen-simul.c
-libcatacomb_la_SOURCES += pgen-stdev.c
-TESTS += pgen.$t
-EXTRA_DIST += tests/pgen
-
-## Finding primitive elements in finite fields.
-pkginclude_HEADERS += prim.h
-libcatacomb_la_SOURCES += prim.c
-
-## Iterating over all prime numbers from a given starting point.
-pkginclude_HEADERS += primeiter.h
-libcatacomb_la_SOURCES += primeiter.c
-TESTS += primeiter.$t
-primeiter.lo: wheel.h
-
-## The Miller--Rabin primality test.
-pkginclude_HEADERS += rabin.h
-libcatacomb_la_SOURCES += rabin.c
-
-## Finding `strong' primes, using Gordon's algorithm. Once upon a time,
-## products of these kinds of numbers were harder to factor.
-pkginclude_HEADERS += strongprime.h
-libcatacomb_la_SOURCES += strongprime.c
-
-## A `wheel', used by the prime iteration machinery.
-nodist_pkginclude_HEADERS += wheel.h
-nodist_libcatacomb_la_SOURCES += wheel.c
-CLEANFILES += wheel.h wheel.c
-noinst_PROGRAMS += genwheel
-genwheel_LDADD = $(mLib_LIBS)
-wheel.h: wheel.c
-wheel.c: genwheel$e
- $(AM_V_GEN)./genwheel -hwheel.h -cwheel.c \
- -sCATACOMB_WHEEL_H \
- -n5 -t"unsigned char" -iwheel
-
-###--------------------------------------------------------------------------
-### Binary polynomial arithmetic.
-
-## User-visible binary polynomial arithmetic.
-pkginclude_HEADERS += gf.h
-libcatacomb_la_SOURCES += gf-arith.c
-TESTS += gf-arith.$t
-libcatacomb_la_SOURCES += gf-exp.c gf-exp.h
-libcatacomb_la_SOURCES += gf-gcd.c
-TESTS += gf-gcd.$t
-EXTRA_DIST += tests/gf
-
-## Low-level binary polynomial arithmetic.
-pkginclude_HEADERS += gfx.h
-libcatacomb_la_SOURCES += gfx.c
-TESTS += gfx.$t
-libcatacomb_la_SOURCES += gfx-kmul.c
-TESTS += gfx-kmul.$t
-libcatacomb_la_SOURCES += gfx-sqr.c
-gfx-sqr.lo: gfx-sqr-tab.h
-TESTS += gfx-sqr.$t
-CLEANFILES += gfx-sqr-tab.h
-noinst_PROGRAMS += gfx-sqr-mktab
-gfx-sqr-tab.h: gfx-sqr-mktab$e
- $(AM_V_GEN)./gfx-sqr-mktab >gfx-sqr-tab.h.in && \
- mv gfx-sqr-tab.h.in gfx-sqr-tab.h
-EXTRA_DIST += tests/gfx
-
-## Conversions between normal and polynomial basis representations for binary
-## fields.
-pkginclude_HEADERS += gfn.h
-libcatacomb_la_SOURCES += gfn.c
-TESTS += gfn.$t
-EXTRA_DIST += tests/gfn
-
-## Efficient reduction modulo sparse polynomials.
-pkginclude_HEADERS += gfreduce.h
-libcatacomb_la_SOURCES += gfreduce.c gfreduce-exp.h
-TESTS += gfreduce.$t
-EXTRA_DIST += tests/gfreduce
-
-###--------------------------------------------------------------------------
-### Abstractions for various kinds of algebraic objects.
-
-## Abstract cyclic groups.
-pkginclude_HEADERS += group.h group-guts.h
-libcatacomb_la_SOURCES += group-dstr.c
-libcatacomb_la_SOURCES += group-exp.c group-exp.h
-libcatacomb_la_SOURCES += group-file.c
-libcatacomb_la_SOURCES += group-parse.c
-libcatacomb_la_SOURCES += group-stdops.c
-libcatacomb_la_SOURCES += group-string.c
-libcatacomb_la_SOURCES += g-bin.c
-libcatacomb_la_SOURCES += g-prime.c
-libcatacomb_la_SOURCES += g-ec.c
-EXTRA_DIST += group-test.c
-TESTS += group-test.$t
-EXTRA_DIST += tests/group
-
-## Abstract finite fields.
-pkginclude_HEADERS += field.h field-guts.h
-libcatacomb_la_SOURCES += field.c
-libcatacomb_la_SOURCES += field-exp.c field-exp.h
-libcatacomb_la_SOURCES += field-parse.c
-libcatacomb_la_SOURCES += f-binpoly.c
-libcatacomb_la_SOURCES += f-niceprime.c
-libcatacomb_la_SOURCES += f-prime.c
-
-## Table of built-in binary fields.
-pkginclude_HEADERS += bintab.h
-libcatacomb_la_SOURCES += bintab.c
-CLEANFILES += bintab.c
-EXTRA_DIST += bintab.in bin-gentab.awk
-bintab.c: bintab.in bin-gentab.awk mpdump$e
- $(AM_V_GEN)awk -f $(srcdir)/bin-gentab.awk \
- <$(srcdir)/bintab.in >bintab.c.new && \
- mv bintab.c.new bintab.c
-
-## Table of built-in prime fields.
-pkginclude_HEADERS += ptab.h
-libcatacomb_la_SOURCES += ptab.c
-CLEANFILES += ptab.c
-EXTRA_DIST += ptab.in p-gentab.awk
-ptab.c: ptab.in p-gentab.awk mpdump$e
- $(AM_V_GEN)awk -f $(srcdir)/p-gentab.awk \
- <$(srcdir)/ptab.in >ptab.c.new && \
- mv ptab.c.new ptab.c
-
-## A utility for building multiprecision integer constants.
-noinst_PROGRAMS += mpdump
-mpdump_LDADD = libmpbase.la
-$(mpdump_OBJECTS): mptypes.h
+libcatacomb_la_LIBADD = $(MATHLIBS) $(PIXIE_LIBS) $(CATACOMB_LIBS) \
+ $(mLib_LIBS)
###--------------------------------------------------------------------------
-### Elliptic curve arithmetic.
-
-## Basic elliptic curve arithmetic.
-pkginclude_HEADERS += ec.h ec-guts.h
-libcatacomb_la_SOURCES += ec.c
-libcatacomb_la_SOURCES += ec-exp.c ec-exp.h
-libcatacomb_la_SOURCES += ec-info.c
-TESTS += ec-info.$t
-libcatacomb_la_SOURCES += ec-bin.c
-TESTS += ec-bin.$t
-libcatacomb_la_SOURCES += ec-prime.c
-TESTS += ec-prime.$t
-EXTRA_DIST += tests/ec
-
-## The standard `raw' encoding (`EC2OSP') of elliptic curve points.
-pkginclude_HEADERS += ec-raw.h
-libcatacomb_la_SOURCES += ec-raw.c
-
-## Test infrastructure for elliptic curves.
-pkginclude_HEADERS += ec-test.h
-libcatacomb_la_SOURCES += ec-test.c
-TESTS += ec-test.$t
-
-## A table of built-in elliptic curves.
-pkginclude_HEADERS += ectab.h
-libcatacomb_la_SOURCES += ectab.c
-CLEANFILES += ectab.c
-EXTRA_DIST += ectab.in ec-gentab.awk
-ectab.c: ectab.in ec-gentab.awk mpdump$e
- $(AM_V_GEN)awk -f $(srcdir)/ec-gentab.awk \
- <$(srcdir)/ectab.in >ectab.c.new && \
- mv ectab.c.new ectab.c
-
-###--------------------------------------------------------------------------
-### Autogenerated lists.
-
-## Fancy template substitutions.
-multigen = python $(srcdir)/multigen
-EXTRA_DIST += multigen
-
-## The heart of this is an enormous cross-product of crypto primitives and
-## the corresponding modes of operation. Rather than write it out longhand,
-## we generate it using `multigen'. Unfortunately, this needs to be done
-## at the Automake level, which causes some interesting bootstrapping
-## problems.
-include modes.am
-
-EXTRA_DIST += modes.am.in modes.am
-MAINTAINERCLEANFILES += $(srcdir)/modes.am
-
-## Generate the lists.
-$(srcdir)/modes.am: modes.am.in
- $(AM_V_GEN)$(multigen) -g $(srcdir)/modes.am.in $(srcdir)/modes.am \
- blkc="$(BLKCS)" \
- blkcmode="$(BLKCMODES)" \
- blkcciphermode="$(BLKCCIPHERMODES)" \
- hash="$(HASHES)" \
- hashmode="$(HASHMODES)" \
- hashciphermode="$(HASHCIPHERMODES)" \
- hashmacmode="$(HASHMACMODES)"
-
-## Initialize lists of known classes.
-ALL_CIPHERS = $(CIPHER_MODES)
-ALL_HASHES = $(HASHES)
-ALL_MACS = $(MAC_MODES)
-
-###--------------------------------------------------------------------------
-### Block ciphers.
-
-BLKCS =
-BLKCMODES =
-
-BLKCCIPHERMODES =
-BLKCMODES += $(BLKCCIPHERMODES)
-
-## A tool for translating the AES-contest test vectors into a form our test
-## rigs understand.
-EXTRA_DIST += tests/aes-trans
-
-## Block cipher utility macros, mainly used in mode implementations.
-pkginclude_HEADERS += blkc.h
-
-## Source code and headers for the block ciphers.
-libcatacomb_la_SOURCES += $(BLKC_C)
-pkginclude_HEADERS += $(BLKC_H)
-
-## Schneier's `Blowfish' block cipher.
-BLKCS += blowfish
-blowfish.lo: blowfish-tab.h
-CLEANFILES += blowfish-tab.h
-noinst_PROGRAMS += blowfish-mktab
-blowfish_mktab_CPPFLAGS = $(AM_CPPFLAGS) -DQUIET
-blowfish-tab.h: blowfish-mktab$e
- $(AM_V_GEN)./blowfish-mktab >blowfish-tab.h.new && \
- mv blowfish-tab.h.new blowfish-tab.h
-
-## Adams and Tavares' `CAST' block ciphers.
-BLKCS += cast128 cast256
-libcatacomb_la_SOURCES += cast-s.c cast-sk.c cast-base.h cast-tab.h
-cast256.$t: tests/cast256
-EXTRA_DIST += tests/cast256.aes
-MAINTAINERCLEANFILES += $(srcdir)/tests/cast256
-tests/cast256: tests/cast256.aes
- $(AM_V_GEN)$(srcdir)/tests/aes-trans CAST256 \
- <$(srcdir)/tests/cast256.aes \
- >$(srcdir)/tests/cast256.new && \
- mv $(srcdir)/tests/cast256.new $(srcdir)/tests/cast256
-
-## IBM's `DES' block cipher, by Feistel, Coppersmith, and others.
-BLKCS += des des3
-libcatacomb_la_SOURCES += des-base.h des-base.c desx-tab.h
-des-base.lo: des-tab.h
-CLEANFILES += des-tab.h
-noinst_PROGRAMS += des-mktab
-des-tab.h: des-mktab$e
- $(AM_V_GEN)./des-mktab >des-tab.h.new && \
- mv des-tab.h.new des-tab.h
-
-## Rivest's `DESX' variant, with pre- and post-whitening.
-BLKCS += desx
-libcatacomb_la_SOURCES += desx-tab.h
-
-## Lai and Massey's IDEA.
-BLKCS += idea
-
-## IBM's `MARS' block cipher.
-BLKCS += mars
-mars.lo: mars-tab.h
-CLEANFILES += mars-tab.h
-noinst_PROGRAMS += mars-mktab
-mars-tab.h: mars-mktab$e
- $(AM_V_GEN)./mars-mktab >mars-tab.h.new && \
- mv mars-tab.h.new mars-tab.h
-mars.$t: tests/mars
-EXTRA_DIST += tests/mars.aes
-MAINTAINERCLEANFILES += $(srcdir)/tests/mars
-tests/mars: tests/mars.aes
- $(AM_V_GEN)$(srcdir)/tests/aes-trans Mars \
- <$(srcdir)/tests/mars.aes \
- >$(srcdir)/tests/mars.new && \
- mv $(srcdir)/tests/mars.new $(srcdir)/tests/mars
-
-## Daemen, Peeters, Van Assche and Rijmen's `Noekeon'.
-BLKCS += noekeon
-
-## Rivest's `RC2' block cipher.
-BLKCS += rc2
-libcatacomb_la_SOURCES += rc2-tab.h
-
-## Rivest's `RC5'.
-BLKCS += rc5
-
-## Daemen and Rijmen's `Rijndael' block cipher, selected as AES.
-BLKCS += rijndael rijndael192 rijndael256
-libcatacomb_la_SOURCES += rijndael-base.h rijndael-base.c
-rijndael-base.lo: rijndael-tab.h
-CLEANFILES += rijndael-tab.h
-noinst_PROGRAMS += rijndael-mktab
-rijndael-tab.h: rijndael-mktab$e
- $(AM_V_GEN)./rijndael-mktab >rijndael-tab.h.new && \
- mv rijndael-tab.h.new rijndael-tab.h
-rijndael.$t: tests/rijndael
-EXTRA_DIST += tests/rijndael.aes
-MAINTAINERCLEANFILES += $(srcdir)/tests/rijndael
-tests/rijndael: tests/rijndael.aes
- $(AM_V_GEN)$(srcdir)/tests/aes-trans Rijndael \
- <$(srcdir)/tests/rijndael.aes \
- >$(srcdir)/tests/rijndael.new && \
- mv $(srcdir)/tests/rijndael.new $(srcdir)/tests/rijndael
-
-## Massey's `SAFER' block ciphers.
-BLKCS += safer safersk
-safer.lo: safer-tab.h
-CLEANFILES += safer-tab.h
-noinst_PROGRAMS += safer-mktab
-safer-tab.h: safer-mktab$e
- $(AM_V_GEN)./safer-mktab >safer-tab.h.new && \
- mv safer-tab.h.new safer-tab.h
-
-## Anderson, Biham and Knudsen's `Serpent' block cipher.
-BLKCS += serpent
-libcatacomb_la_SOURCES += serpent-sbox.h
-noinst_PROGRAMS += serpent-check
-TESTS += serpent-check
-serpent.$t: tests/serpent
-EXTRA_DIST += tests/serpent.aes
-MAINTAINERCLEANFILES += $(srcdir)/tests/serpent
-tests/serpent: tests/serpent.aes
- $(AM_V_GEN)$(srcdir)/tests/aes-trans Serpent -v rev=1 \
- <$(srcdir)/tests/serpent.aes \
- >$(srcdir)/tests/serpent.new && \
- mv $(srcdir)/tests/serpent.new $(srcdir)/tests/serpent
-
-## The National Security Agency's `Skipjack' block cipher. You don't want to
-## use this.
-BLKCS += skipjack
-libcatacomb_la_SOURCES += skipjack-tab.h
-
-## Daemen and Rijmen's `Square' block cipher.
-BLKCS += square
-square.lo: square-tab.h
-CLEANFILES += square-tab.h
-noinst_PROGRAMS += square-mktab
-square-tab.h: square-mktab$e
- $(AM_V_GEN)./square-mktab >square-tab.h.new && \
- mv square-tab.h.new square-tab.h
-
-## Wheeler and Needham's `TEA' and `XTEA' block ciphers.
-BLKCS += tea xtea
-
-## Schneier, Kelsey, Whiting, Wagner, Hall and Ferguson's `Twofish' block
-## cipher.
-BLKCS += twofish
-twofish.lo: twofish-tab.h
-CLEANFILES += twofish-tab.h
-noinst_PROGRAMS += twofish-mktab
-twofish-tab.h: twofish-mktab$e
- $(AM_V_GEN)./twofish-mktab >twofish-tab.h.new && \
- mv twofish-tab.h.new twofish-tab.h
-twofish.$t: tests/twofish
-EXTRA_DIST += tests/twofish.aes
-MAINTAINERCLEANFILES += $(srcdir)/tests/twofish
-tests/twofish: tests/twofish.aes
- $(AM_V_GEN)$(srcdir)/tests/aes-trans Twofish \
- <$(srcdir)/tests/twofish.aes \
- >$(srcdir)/tests/twofish.new && \
- mv $(srcdir)/tests/twofish.new $(srcdir)/tests/twofish
-
-## The old NIST modes for DES.
-BLKCCIPHERMODES += cbc cfb ecb ofb
-
-## Counter mode.
-BLKCCIPHERMODES += counter
+### Package-configuration file.
-###--------------------------------------------------------------------------
-### Hash functions.
-
-HASHES =
-HASHMODES =
-
-HASHCIPHERMODES =
-HASHMODES += $(HASHCIPHERMODES)
-
-HASHMACMODES =
-HASHMODES += $(HASHMACMODES)
-
-## Common definitions for hash functions.
-pkginclude_HEADERS += hash.h
-
-## Source code and headers for the hash functions.
-libcatacomb_la_SOURCES += $(HASH_C)
-pkginclude_HEADERS += $(HASH_H)
-
-## Lim and KISA's `HAS-160', recommended for use with KCDSA.
-HASHES += has160
-
-## Rivest's `MD' series of hash functions
-HASHES += md2 md4 md5
-libcatacomb_la_SOURCES += md2-tab.h
-
-## Dobbertin, Bosselaers and Preneel's `RIPEMD' suite.
-HASHES += rmd128 rmd160 rmd256 rmd320
-
-## The National Security Agency's `SHA-1' hash function.
-HASHES += sha
-
-## The National Security Agency's `SHA-2' suite.
-HASHES += sha224 sha256
-HASHES += sha384 sha512
-
-## Anderson and Biham's `Tiger' hash function.
-HASHES += tiger
-libcatacomb_la_SOURCES += tiger-base.h
-tiger.lo: tiger-tab.h
-CLEANFILES += tiger-tab.h
-noinst_PROGRAMS += tiger-mktab
-tiger-tab.h: tiger-mktab$e
- $(AM_V_GEN)./tiger-mktab >tiger-tab.h.new && \
- mv tiger-tab.h.new tiger-tab.h
-
-## Barreto and Rijmen's `Whirlpool' hash function.
-HASHES += whirlpool whirlpool256
-whirlpool.lo: whirlpool-tab.h
-CLEANFILES += whirlpool-tab.h
-noinst_PROGRAMS += whirlpool-mktab
-whirlpool-tab.h: whirlpool-mktab$e
- $(AM_V_GEN)./whirlpool-mktab >whirlpool-tab.h.new && \
- mv whirlpool-tab.h.new whirlpool-tab.h
-
-## Bellare, Canetti and Krawczyk's `HMAC' mode for message authentication.
-HASHMACMODES += hmac
-
-## MGF1, used in OAEP and PSS.
-HASHCIPHERMODES += mgf
-
-###--------------------------------------------------------------------------
-### Other symmetric primitives.
-
-## The CRC32 algorithm, which is useful, but has no worthwhile security.
-pkginclude_HEADERS += crc32.h
-libcatacomb_la_SOURCES += crc32.c
-ALL_HASHES += crc32=gcrc32
-
-## Rivest's `RC4' stream cipher.
-pkginclude_HEADERS += rc4.h
-libcatacomb_la_SOURCES += rc4.c
-TESTS += rc4.$t
-EXTRA_DIST += tests/rc4
-ALL_CIPHERS += rc4
-
-## Coppersmith and Rogaway's `SEAL' pseudorandom function.
-pkginclude_HEADERS += seal.h
-libcatacomb_la_SOURCES += seal.c
-TESTS += seal.$t
-EXTRA_DIST += tests/seal
-ALL_CIPHERS += seal
-###--------------------------------------------------------------------------
-### Autogenerated mode implementations.
-
-## The master stamp file, indicating that we generated all of the sources.
-CLEANFILES += modes-gen-stamp
-EXTRA_DIST += mode.h.in mode.c.in
-modes-gen-stamp:
- $(AM_V_at)touch modes-gen-stamp
- $(AM_V_GEN)$(multigen) -g $(srcdir)/mode.c.in \
- @base-@mode.c \
- base="$(BLKCS)" mode="$(BLKCMODES)"
- $(AM_V_at)$(multigen) -g $(srcdir)/mode.c.in \
- @base-@mode.c \
- base="$(HASHES)" mode="$(HASHMODES)"
- $(AM_V_at)$(multigen) -g $(srcdir)/mode.h.in \
- @base-@mode.h \
- base="$(BLKCS)" mode="$(BLKCMODES)"
- $(AM_V_at)$(multigen) -g $(srcdir)/mode.h.in \
- @base-@mode.h \
- base="$(HASHES)" mode="$(HASHMODES)"
- $(AM_V_at)touch modes-gen-stamp
-
-## The individual mode interfaces and implementations.
-pkginclude_HEADERS += $(MODE_H)
-
-## Generated implementations.
-BUILT_SOURCES += $(GENMODES_C)
-CLEANFILES += $(GENMODES_C)
-nodist_libcatacomb_la_SOURCES += $(GENMODES_C)
-$(GENMODES_C): modes-gen-stamp
-
-## Generated interfaces.
-BUILT_SOURCES += $(GENMODES_H)
-CLEANFILES += $(GENMODES_H)
-nodist_pkginclude_HEADERS += $(GENMODES_H)
-$(GENMODES_H): modes-gen-stamp
-
-###--------------------------------------------------------------------------
-### Tables of classes for encryption, hashing, and message authentication.
-
-## The skeleton for the class tables.
-EXTRA_DIST += gthingtab.c.in
-
-## Table of cipher classes.
-pkginclude_HEADERS += gcipher.h
-CLEANFILES += gciphertab.c
-nodist_libcatacomb_la_SOURCES += gciphertab.c
-gciphertab.c: gthingtab.c.in
- $(AM_V_GEN)$(multigen) -g $(srcdir)/gthingtab.c.in gciphertab.c \
- what=gcipher cls=gccipher thing="$(ALL_CIPHERS)"
-
-## Table of hash classes.
-pkginclude_HEADERS += ghash.h ghash-def.h
-CLEANFILES += ghashtab.c
-nodist_libcatacomb_la_SOURCES += ghashtab.c
-ghashtab.c: gthingtab.c.in
- $(AM_V_GEN)$(multigen) -g $(srcdir)/gthingtab.c.in ghashtab.c \
- what=ghash cls=gchash thing="$(ALL_HASHES)"
-
-## Table of MAC classes.
-pkginclude_HEADERS += gmac.h
-CLEANFILES += gmactab.c
-nodist_libcatacomb_la_SOURCES += gmactab.c
-gmactab.c: gthingtab.c.in
- $(AM_V_GEN)$(multigen) -g $(srcdir)/gthingtab.c.in gmactab.c \
- what=gmac cls=gcmac thing="$(ALL_MACS)"
-
-###--------------------------------------------------------------------------
-### Testing for symmetric crypto things.
-
-## Run the test programs.
-TESTS += $(SYMM_TESTS)
-EXTRA_DIST += $(SYMM_TEST_FILES)
-
-## A piece of sample text for round-trip testing encryption modes.
-EXTRA_DIST += daftstory.h
-
-###--------------------------------------------------------------------------
-### Key management.
-
-## Assistance for elliptic-curve keys.
-pkginclude_HEADERS += ec-keys.h
-libcatacomb_la_SOURCES += ec-fetch.c
-
-## Managing keys and keyring files.
-pkginclude_HEADERS += key.h
-libcatacomb_la_SOURCES += key-attr.c
-libcatacomb_la_SOURCES += key-fetch.c
-libcatacomb_la_SOURCES += key-file.c
-libcatacomb_la_SOURCES += key-io.c
-libcatacomb_la_SOURCES += key-misc.c
-libcatacomb_la_SOURCES += key-moan.c
-
-## Managing key data.
-pkginclude_HEADERS += key-data.h
-libcatacomb_la_SOURCES += key-binary.c
-libcatacomb_la_SOURCES += key-data.c
-libcatacomb_la_SOURCES += key-flags.c
-libcatacomb_la_SOURCES += key-pack.c
-libcatacomb_la_SOURCES += key-pass.c
-libcatacomb_la_SOURCES += key-text.c
-
-## Error reporting.
-pkginclude_HEADERS += key-error.h
-libcatacomb_la_SOURCES += key-error.c
-
-## Reading passphrases.
-pkginclude_HEADERS += passphrase.h
-libcatacomb_la_SOURCES += passphrase.c
-
-## Interfacing with the passphrase pixie.
-pkginclude_HEADERS += pixie.h
-libcatacomb_la_SOURCES += pixie-common.c
-
-###--------------------------------------------------------------------------
-### Secret sharing.
-
-## Efficient sharing over GF(2^8).
-pkginclude_HEADERS += gfshare.h
-libcatacomb_la_SOURCES += gfshare.c
-gfshare.lo: gfshare-tab.h
-CLEANFILES += gfshare-tab.h
-noinst_PROGRAMS += gfshare-mktab
-gfshare-tab.h: gfshare-mktab$e
- $(AM_V_GEN)./gfshare-mktab >gfshare-tab.h.new && \
- mv gfshare-tab.h.new gfshare-tab.h
-TESTS += gfshare.$t
-
-## Number-theoretic sharing over GF(p).
-pkginclude_HEADERS += share.h
-libcatacomb_la_SOURCES += share.c
-TESTS += share.$t
-
-###--------------------------------------------------------------------------
-### Public-key cryptography.
-
-## The Blum--Blum--Shub random-bit generator.
-pkginclude_HEADERS += bbs.h
-libcatacomb_la_SOURCES += bbs-fetch.c
-libcatacomb_la_SOURCES += bbs-gen.c
-libcatacomb_la_SOURCES += bbs-jump.c
-TESTS += bbs-jump.$t
-libcatacomb_la_SOURCES += bbs-rand.c
-TESTS += bbs-rand.$t
-EXTRA_DIST += tests/bbs
-
-## Plain Diffie--Hellman, in Schorr groups.
-pkginclude_HEADERS += dh.h
-libcatacomb_la_SOURCES += dh-check.c
-libcatacomb_la_SOURCES += dh-fetch.c
-libcatacomb_la_SOURCES += dh-gen.c
-libcatacomb_la_SOURCES += dh-kcdsa.c
-libcatacomb_la_SOURCES += dh-limlee.c
-libcatacomb_la_SOURCES += dh-param.c
-TESTS += dh-param.$t
-
-## The National Security Agency's Digital Signature Algorithm.
-pkginclude_HEADERS += dsa.h
-libcatacomb_la_SOURCES += dsa-gen.c
-TESTS += dsa-gen.$t
-libcatacomb_la_SOURCES += dsa-misc.c
-libcatacomb_la_SOURCES += dsa-sign.c
-TESTS += dsa-sign.$t
-libcatacomb_la_SOURCES += dsa-verify.c
-TESTS += dsa-verify.$t
-libcatacomb_la_SOURCES += dsa-check.c
-EXTRA_DIST += tests/dsa
-
-## Generalization of DSA to arbitrary cyclic groups.
-pkginclude_HEADERS += gdsa.h
-libcatacomb_la_SOURCES += gdsa.c
-TESTS += gdsa.$t
-EXTRA_DIST += tests/gdsa
-
-## KISA `KCDSA', generalized to arbitrary cyclic groups.
-pkginclude_HEADERS += gkcdsa.h
-libcatacomb_la_SOURCES += gkcdsa.c
-TESTS += gkcdsa.$t
-EXTRA_DIST += tests/gkcdsa
-
-## General key validity checking machinery.
-pkginclude_HEADERS += keycheck.h
-libcatacomb_la_SOURCES += keycheck.c
-libcatacomb_la_SOURCES += keycheck-mp.c
-libcatacomb_la_SOURCES += keycheck-report.c
-
-## The Rivest--Shamir--Adleman trapdoor one-way function.
-pkginclude_HEADERS += rsa.h
-libcatacomb_la_SOURCES += rsa-fetch.c
-libcatacomb_la_SOURCES += rsa-gen.c
-libcatacomb_la_SOURCES += rsa-priv.c
-libcatacomb_la_SOURCES += rsa-pub.c
-libcatacomb_la_SOURCES += rsa-recover.c
-libcatacomb_la_SOURCES += oaep.c
-libcatacomb_la_SOURCES += pkcs1.c
-libcatacomb_la_SOURCES += pss.c
-EXTRA_DIST += rsa-test.c
-TESTS += rsa-test.$t
-EXTRA_DIST += tests/rsa
-
-###--------------------------------------------------------------------------
-### Random number generators.
-
-## The FIPS186 generator used to generate DSA domain parameters.
-pkginclude_HEADERS += dsarand.h
-libcatacomb_la_SOURCES += dsarand.c
-
-## Knuth's lagged-Fibonacci generator.
-pkginclude_HEADERS += fibrand.h
-libcatacomb_la_SOURCES += fibrand.c
-
-## The FIPS 140--2 random number generator tests.
-pkginclude_HEADERS += fipstest.h
-libcatacomb_la_SOURCES += fipstest.c
-
-## Interface for generic random number sources.
-pkginclude_HEADERS += grand.h
-libcatacomb_la_SOURCES += grand.c
-
-## A simple linear-congruential generator.
-pkginclude_HEADERS += lcrand.h
-libcatacomb_la_SOURCES += lcrand.c
-TESTS += lcrand.$t
-EXTRA_DIST += tests/lcrand
-
-## Maurer's universal statistical test.
-pkginclude_HEADERS += maurer.h
-libcatacomb_la_SOURCES += maurer.c
-
-## System-specific noise acquisition.
-pkginclude_HEADERS += noise.h
-libcatacomb_la_SOURCES += noise.c
-
-## Cryptographic laundering for true random data generation.
-pkginclude_HEADERS += rand.h
-libcatacomb_la_SOURCES += rand.c
-
-## The SSL v3 pseudorandom function.
-pkginclude_HEADERS += sslprf.h
-libcatacomb_la_SOURCES += sslprf.c
-TESTS += sslprf.$t
-EXTRA_DIST += tests/sslprf
-
-## The TLS v1 pseudorandom function.
-pkginclude_HEADERS += tlsprf.h
-libcatacomb_la_SOURCES += tlsprf.c
-TESTS += tlsprf.$t
-EXTRA_DIST += tests/tlsprf
-
-###--------------------------------------------------------------------------
-### The `catcrypt' library.
-
-noinst_LTLIBRARIES += libcatcrypt.la
-libcatcrypt_la_SOURCES =
-
-## The main library.
-libcatcrypt_la_SOURCES += cc.h
-libcatcrypt_la_SOURCES += cc-enc.c
-libcatcrypt_la_SOURCES += cc-hash.c
-libcatcrypt_la_SOURCES += cc-kem.c
-libcatcrypt_la_SOURCES += cc-list.c
-libcatcrypt_la_SOURCES += cc-progress.c
-libcatcrypt_la_SOURCES += cc-sig.c
-libcatcrypt_la_SOURCES += cc-subcmd.c
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = catacomb.pc
+EXTRA_DIST += catacomb.pc.in
+CLEANFILES += catacomb.pc
-## Date parsing.
-libcatcrypt_la_SOURCES += getdate.h
-libcatcrypt_la_SOURCES += getdate.y
+catacomb.pc: catacomb.pc.in Makefile
+ $(SUBST) $(srcdir)/catacomb.pc.in >$@.new $(SUBSTITUTIONS) && \
+ mv $@.new $@
###--------------------------------------------------------------------------
-### Utility programs.
-
-UTILS_LIBS = libcatcrypt.la libcatacomb.la $(mLib_LIBS) $(LIBS)
-
-## Generate and verify datestamped cookies.
-bin_PROGRAMS += cookie
-cookie_LDADD = $(UTILS_LIBS)
-dist_man_MANS += cookie.1
-
-## Asymmetric message encryption and decryption with deniable authentication.
-bin_PROGRAMS += catcrypt
-catcrypt_LDADD = $(UTILS_LIBS)
-dist_man_MANS += catcrypt.1
-
-## Signing and verifying files.
-bin_PROGRAMS += catsign
-catsign_LDADD = $(UTILS_LIBS)
-dist_man_MANS += catsign.1
-
-## Issue and verify signatures on directory trees.
-bin_PROGRAMS += dsig
-dsig_LDADD = $(UTILS_LIBS)
-dist_man_MANS += dsig.1
+### Subdirectories.
+###
+### Note: There are implicit dependencies between the subdirectories. Be
+### careful about reordering them.
-## Compute factorials to arbitrary precision.
-bin_PROGRAMS += factorial
-factorial_LDADD = $(UTILS_LIBS)
+## Basic utilities.
+SUBDIRS += base
+libcatacomb_la_LIBADD += base/libbase.la
-## Compute Fibonacci numbers to arbitrary precision.
-bin_PROGRAMS += fibonacci
-fibonacci_LDADD = $(UTILS_LIBS)
+## Mathematical infrastructure.
+SUBDIRS += math
+libcatacomb_la_LIBADD += math/libmath.la
-## Compute hashes of files.
-bin_PROGRAMS += hashsum
-hashsum_LDADD = $(UTILS_LIBS)
-dist_man_MANS += hashsum.1
+## Symmetric cryptography.
+SUBDIRS += symm
+libcatacomb_la_LIBADD += symm/libsymm.la
-## Key management utility.
-bin_PROGRAMS += key
-key_SOURCES = keyutil.c
-key_LDADD = $(UTILS_LIBS)
-dist_man_MANS += key.1 keyring.5
+## Key management.
+SUBDIRS += key
+libcatacomb_la_LIBADD += key/libkey.la
-## Generate passphrases with given entropy using wordlists and Markov models.
-bin_PROGRAMS += mkphrase
-mkphrase_LDADD = $(UTILS_LIBS)
-dist_man_MANS += mkphrase.1
+## Miscellaneous cryptography.
+SUBDIRS += misc
+libcatacomb_la_LIBADD += misc/libmisc.la
-## Performance testing.
-bin_PROGRAMS += perftest
-perftest_LDADD = $(UTILS_LIBS)
+## Public-key cryptography.
+SUBDIRS += pub
+libcatacomb_la_LIBADD += pub/libpub.la
-## Remember passphrases for limited periods of time.
-bin_PROGRAMS += pixie
-pixie_SOURCES = pixie.c
-pixie_LDADD = libcatacomb.la $(mLib_LIBS) $(PIXIE_LIBS)
-dist_man_MANS += pixie.1
-EXTRA_DIST += xpixie
+## Random number generators and related functionality.
+SUBDIRS += rand
+libcatacomb_la_LIBADD += rand/librand.la
-## Generate random data.
-bin_PROGRAMS += rspit
-rspit_LDADD = $(UTILS_LIBS)
+## At this point, we should construct the library.
+SUBDIRS += .
###--------------------------------------------------------------------------
-### Testing.
+### Ancillary programs.
-SUFFIXES += .c .$t .to
-.c.to:
- $(AM_V_CC)$(COMPILE) -c -DTEST_RIG -DSRCDIR=\"$(srcdir)\" $< -o $@
-.to.$t: libcatacomb.la
- $(AM_V_CCLD)$(LINK) $< libcatacomb.la $(mLib_LIBS) $(LIBS)
-.PRECIOUS: %.to
-CLEANFILES += *.to *.$t
+SUBDIRS += progs
###--------------------------------------------------------------------------
-### The pkg-config file.
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = catacomb.pc
-EXTRA_DIST += catacomb.pc.in
-CLEANFILES += catacomb.pc
-
-catacomb.pc: catacomb.pc.in Makefile
- $(SUBST) $(srcdir)/catacomb.pc.in >$@.new $(SUBSTITUTIONS) && \
- mv $@.new $@
-
-###--------------------------------------------------------------------------
-### Release tweaking.
+### Distribution.
## Release number.
dist-hook::
echo $(VERSION) >$(distdir)/RELEASE
## Additional build tools.
+EXTRA_DIST += build-setup
EXTRA_DIST += config/auto-version
+EXTRA_DIST += config/confsubst
+
+## Documentation files.
+EXTRA_DIST += README.cipher
+EXTRA_DIST += README.hash
+EXTRA_DIST += README.mp
+EXTRA_DIST += README.random
###--------------------------------------------------------------------------
### Debian.
EXTRA_DIST += debian/control
EXTRA_DIST += debian/changelog
EXTRA_DIST += debian/copyright
+EXTRA_DIST += debian/compat
+EXTRA_DIST += debian/source/format
+
+## catacomb2
+EXTRA_DIST += debian/catacomb2.install
+EXTRA_DIST += debian/catacomb2.symbols
## catacomb-bin
+EXTRA_DIST += debian/catacomb-bin.install
EXTRA_DIST += debian/catacomb-bin.prerm
EXTRA_DIST += debian/catacomb-bin.postinst
EXTRA_DIST += debian/catacomb-bin.config
EXTRA_DIST += debian/catacomb-bin.templates
+## catacomb-data
+EXTRA_DIST += debian/catacomb-data.install
+
+## catacomb-dev
+EXTRA_DIST += debian/catacomb-dev.install
+
###----- That's all, folks --------------------------------------------------