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.
participants (1)
-
Andrew Kuchling