Python Cryptography Toolkit 1.9alpha2

Andrew Kuchling akuchlin@mems-exchange.org
Mon, 10 Jun 2002 09:23:15 -0400


I've issued a new release of the Python Cryptography Toolkit, version
1.9alpha2.  This version brings back the Crypto.PublicKey and
Crypto.Protocol removed from 1.9alpha1, makes a few more
backwards-incompatible changes in an attempt to tidy things up, and
much of the code has been modernized and tidied up (method renamings,
docstrings, test cases, code reformatting, directory rearranging, &c).
A full list of changes is below.

The Toolkit is a collection of cryptographic algorithms and protocols,
implemented for use from Python, and includes the following:

	    Hash functions: MD2, MD4, RIPEMD. 
	    Block encryption algorithms: AES, ARC2, Blowfish, CAST,
	    	    DES, Triple-DES, IDEA, RC5.
            Stream encryption algorithms: ARC4, simple XOR.
	    Public-key algorithms: RSA, DSA, ElGamal, qNEW.
	    Protocols: All-or-nothing transforms, chaffing/winnowing.
	    Miscellaneous: RFC1751 module for converting 
	           128-key keys into a set of English words, primality testing.

The toolkit's home page is:  
   http://www.amk.ca/python/code/crypto.html

The code has been tested with Python 2.2, though it will probably work
with Python 2.1 as well.  Please report bugs via the bug tracker at 
http://sourceforge.net/projects/pycrypto .

There should be at least one more alpha release that will modernize
the demos and documentation and add more tests for the random pool
module, but I think the incompatible changes are mostly over by this
point.  (I'm not *sure* of that, which is why this is still an alpha.)

--amk                                                             (www.amk.ca)
Hate world. Hate freeness, it bites!
    -- Control, in "Ghost Light"


1.9alpha2
=========

	* (Backwards incompatible) The old Crypto.Hash.HMAC module is
	  gone, replaced by a copy of hmac.py from Python 2.2's standard
	  library.  It will display a warning on interpreter versions
	  older than 2.2.
	
	* (Backwards incompatible) Restored the Crypto.Protocol package,
	  and modernized and tidied up the two modules in it,
	  AllOrNothing.py and Chaffing.py, renaming various methods
	  and changing the interface.
	  
	* (Backwards incompatible) Changed the function names in
	  Crypto.Util.RFC1751.
	
	* Restored the Crypto.PublicKey package at user request.  I
	  think I'll leave it in the package and warn about it in the
	  documentation.  I hope that eventually I can point to
	  someone else's better public-key code, and at that point I
	  may insert warnings and begin the process of deprecating
	  this code.

	* Fix use of a Python 2.2 C function, replacing it with a 
	  2.1-compatible equivalent.  (Bug report and patch by Andrew
	  Eland.)  

	* Fix endianness bugs that caused test case failures on Sparc,
	  PPC, and doubtless other platforms.

        * Fixed compilation problems on FreeBSD and MacOS X.
	
	* Expanded the test suite (requires Sancho, from 
	  http://www.mems-exchange.org/software/sancho/)

        * Added lots of docstrings, so 'pydoc Crypto' now produces 
	  helpful output.  (Open question: maybe *all* of the documentation
	  should be moved into docstrings?)
	  
	* Make test.py automatically add the build/* directory to sys.path.

	* Removed 'inline' declaration from C functions.  Some compilers
	  don't support it, and Python's pyconfig.h no longer tells you whether
	  it's supported or not.  After this change, some ciphers got slower,
	  but others got faster.
	  
	* The C-level API has been changed to reduce the amount of
   	  memory-to-memory copying.   This makes the code neater, but 
	  had ambiguous performance effects; again, some ciphers got slower
	  and others became faster.  Probably this is due to my compiler
	  optimizing slightly worse or better as a result.

        * Moved C source implementations into src/ from block/, hash/, 
	  and stream/.  Having Hash/ and hash/ directories causes problems
	  on case-insensitive filesystems such as Mac OS.

	* Cleaned up the C code for the extensions.