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.