TODO ==== - Implement streaming functionality - look at zlib Must keep track of (1) output FILE* (2) current i (3) current B-3i - Write up project paper - Look at libgit to see how they achieve dynamic/static library compilation * API details. Encoding and decoding must be able to take an open file descriptor and process it until it is empty. * API functionality: Write to indicated buffer instead of open file descriptor. This would allow passing in a pointer to a buffer to write to. * Example usage: File passing program. A small command-line program which reads a file and sends the content SOLE-encoded on a socket. An example receiver can then use the SOLE decoder directly on the incoming data stream to decode it on the fly. * Restructure sole_stream contents. Currently only one block is buffered and the second simply used in-place. Consider adding `blk1` and `blk2` to sole_stream and use marker to indicate the "fullness" of the buffer. Only when the buffer is full (256 bits) will its contents be processed, and 1-2 output blocks will be written. This requires a carry 'quotient' These changes will also allow a simplification in the Ensure byte order is preserved in some sensible way --------------------------------------------------- In particular, for 256-bit blocks we want x[0] to be the least significant bits and x[3] the most. Project structure ----------------- - Makefile Top-level Makefile - src/ should be obvious - doc/ Documentation - include/ Header files - report/ The report "sub"-project (includes its own Makefile) - poc/ Proof of concept implementation in Haskell Reading ------- - http://www.faqs.org/docs/Linux-HOWTO/Program-Library-HOWTO.html - https://sourceware.org/autobook/autobook/autobook_toc.html - http://cacr.uwaterloo.ca/hac/about/chap14.pdf - reading/Cryptography in C and C++, 2nd Edition.pdf https://sourceware.org/autobook/autobook/autobook_toc.html https://www.sourceware.org/autobook/autobook/autobook_276.html#SEC276 https://www.sourceware.org/autobook/autobook/autobook_57.html#SEC57 Autotools circus ---------------- - Make binaries go into 'config' or some other folder - Add config.h.in [DONE] Copyright Notice ---------------- Add copyright notice to 'configure.ac' See: https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Notices.html#Notices