summaryrefslogtreecommitdiff
path: root/TODO
blob: ff649ce9f7d4313e9325fb87f2ba9db1a3e668ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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