summaryrefslogtreecommitdiff
path: root/TODO
blob: ba8bdc179433ae95fae9da57b4e8f9a097e9c9b8 (plain)
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
64
65
66
67
68
69

* Restore RC5, which needs additional keyword arguments

* Look at the C code and modernize it to the current memory APIs,
  class-based exceptions, etc

* Change API to reduce amount of memory copying

* Document the functions and macros for adding a new algorithm
    Hash functions:
  hash_init(), hash_copy(), DIGEST_SIZE, hash_update(), hash_digest()
    Block functions: 
  ...

* Break backward compatibility.  The interfaces were invented around
1995, back when I was younger and dumber.  I'd like to clean them up,
cruelly breaking backward compatibility where necessary, and release
the new code as version 2.0 to signal the magnitude of the changes.
While we have the chance, we can also drop useless code, rename
packages and classes, or whatever.
 
* Should there be a backword-compatibility wrapper for
  Crypto/Hash/MD5.py, containing just 'from md5 import *' and a
  warning message?  (Ditto for Crypto/Hash/SHA.py.)
 
* Modernize the code to current standards (Distutils installation,
docstrings, naming conventions, test suites).  
 
* Possibly add SHA256, SHA512.

* Public-key stuff: should it remain in this package, or should it be
scrapped and the scope restricted to hashing and block encryption?
Public-key is much harder to define and implement, so I think
splitting it out into a separate distribution is the right thing to
do.

* Provide drop-in support for extensions/drivers like
amkCrypto/mxCrypto. There should be some way to register these
drivers in your package, e.g. by defining a certain subdirectory
to be a place where pycrypto looks for these drivers at startup
time.

* Add a secure PRNG (Yarrow, maybe?)


The old TODO list follows:

Core algorithms:
	Elliptic-curve algs should be added; they're not a priority for now. 
	A secret sharing module should be added to Util or Protocols.
	
Protocols:
	Implement ssh
	Add PGP modules to the package, rearranging them to fit.

Generic cryptographic stuff: 
	Optimize the feedback modes a bit

Demo programs:
	Shadowing of files into X parts
	Secure talk or telnet

Documentation:
	Document chaff/winnow better
	Add docstrings everywhere.

Config stuff:
	Smarter distribution building