NLS/SSS Version 1.0 NLS is a synchronous stream cipher, and SSS is a self synchronous stream cipher. Both support MAC calculation across an arbitrary mix of encrypted and clear text. There are four distribution tarballs: 1. nls-1.0.tgz: the NLS cipher and test suite (including reference and fast versions). 2. sss-1.0.tgz: the SSS cipher and test suite (including reference and fast versions). 3. ecrypt-nls-1.0.tgz: the NLS cipher plus a wrapper which implements the Ecrypt synchronous stream cipher API. 4. ecrypt-sss-1.0.tgz: the SSS cipher plus a wrapper which implements the Ecrypt self-synchronous stream cipher API. See http://www.ecrypt.eu.org/stream/api.html for documentation on the ECRYPT API. Unpacking the source: Unpack one or more of the above tarballs. If you want everything, you only need to get the ecrypt-*.tgz files since they already contain the underlying cipher code. Compilation instructions: 1. Edit "Makefile.config" to define the compilation environment. (if you are using a recent gcc on a little-endian machine, you can skip this step). 2. Run "make all". The results of compilation depend on which tarballs you unpacked: 1. nls-*.tgz: When built, this produces nlsref.o and nlsfast.o, a reference implementation and fast implementation respectively. See nls.h for documentation on the low level API. 2. sss-*.tgz: When built, this produces sssref.o and sssfast.o, a reference implementation and fast implementation respectively. See sss.h for documentation on the low level API. 3. ecrypt-nls-*.tgz: When built, this produces ecrypt-nls.o, an implementation of the Ecrypt synchronous stream cipher API, plus the objects normally built by nls-*.tgz. 4. ecrypt-sss-*.tgz: When built, this produces ecrypt-sss.o, an implementation of the Ecrypt synchronous stream cipher API, plus the objects normally built by sss-*.tgz. Other make targets: Other useful make targets include "test", "time", "clean", and "dist". Sophisticated users are referred to the makefiles for more information.