
 M2Crypto 0.04 (17 Apr 2000)
----------------------------

M2Crypto == Python + OpenSSL + SWIG.

M2 stands for "me, too!"*

M2Crypto makes accessible to the Python programmer the following:

    - DH, RSA, DSA, symmetric ciphers, message digests, HMACs.
    - SSL functionality to implement clients and servers.
    - S/MIME v2.

M2Crypto's SSL support includes https servers (based on Medusa and Zope's 
ZServer), https enhancements to Python's client-side web libraries, and 
three models for building SSL servers: forking, threading and asynchronous 
socket I/O.

This release includes S/MIME v2, significant SSL enhancements, and numerous 
bug fixes.

M2Crypto requires Python 1.5.2, OpenSSL 0.9.5, and a post-1.1p5 build of 
SWIG. (I use build-786.)

The release has been tested under FreeBSD 2.x, Redhat Linux 5.2, and WinNT4. 
It should run anywhere Python and OpenSSL run.

Thanks to Ray Soursa <res@loudcloud.com>, Johannes Stezenbach <yawyi@gmx.net>, 
Michael Strder <michael.stroeder@inka.de> and others for bug reports and 
suggestions.

M2Crypto is released under a BSD-type license. See LICENSE for details.


For now, M2Crypto works fine as a prototyping tool. Note the following 
caveats:

1. Possible memory leaks, because of pointer ownership contention
between Python and SWIG. (These would be due to my misprogramming.)

2. No memory locking/clearing for keys, passphrases, etc.

3. PRNG is not CS**; it is unlikely to be CS***.

4. AFAIK, Python and OpenSSL have not been subjected to the full attention 
of the Bugtraq crowd. M2Crypto's handling of active hostile input is 
probably suspect.

Of course, I hope to address these in future.

Meanwhile, have fun! Your feedback is welcome.


Ng Pheng Siong
ngps@post1.com * http://www.post1.com/home/ngps


* Similar software are Marc-Andre Lemburg's mxCrypto, and two earlier
Python interfaces to the SSL portion of SSLeay/OpenSSL.

** Continuous seeding.

*** Cryptographically strong.

