ABC CIPHER. C REFERENCE IMPLEMENTATION WITH PERFORMANCE TESTS 1. PROJECT STRUCTURE Folders and files in main project tree are organized as follows. README This file Makefile Makefile for GNU make utility ecrypt-portable.h ECRYPT portable C default macros ecrypt-config.h ECRYPT macros for integer types ecrypt-machine.h ECRYPT platform-specific macros ecrypt-sync.h ECRYPT interface declarations ecrypt-sync.c ECRYPT standard routine implementation abc.h Header declarations of ABC constants abc.c Core ABC routines main.c Various tests of ABC functionality 2. BUILDING PROJECT FOR GNU GCC Executable for ABC performance test (abc) is created by executing 'make all' (or alternatively just 'make') command. Cleanup of object files can be performed by 'make clean'. Rebuild of everything is done by 'make rebuild' command. 3. VARYING IMPLEMENTATION PARAMETERS Implementation memory consumption (and therefore speed) can be varied at compile time by ECRYPT_VARIANT parameter, specified in Makefile. Specifically, ECRYPT_VARIANT controls optimization window size and cycle unroll depth in ABC core code. Possible values for ECRYPT_VARIANT are defined in the table below. ECRYPT_VARIANT Optimization window size Cycle unroll depth 0 1 (no optimization) 1 1 2 4 2 2 8 3 4 4 4 4 8 5 4 16 6 8 4 7 8 8 8 8 16 9 12-12-8 16