Knihovna M2Crypto je navržena jako toolkit OpenSSL knihovny pro Python. Propojení jazyka a SSL je provedeno pomocí nástroje SWIG. SWIG vlastně zpřístupňuje OpenSSL C API jazyku Python, druhá část knihovny poskytuje objektově orientované rozhraní pro toto API.
Knihovna podporuje šifry RSA, DSA, DH, HMACs a symetrické šifry založené na AES. Pro šifrovanou komunikaci typu klient-server je implementováno klasické rozhraní SSL. Klasické síťové moduly httplib, urllib a xmlrpclib je možné rozšířit pomocí httpslib. Je možné rovněž použít FTP/TLS klient a server. Posledním kouskem do skládačky jsou rozšíření aplikačního serveru Zope – ZServerSSL a ZSmime.
Struktura knihovny by se dala přehledně zapsat takto:
- ASN1: wrapper pro OpenSSL ASN1 API
- AuthCookie: bezpečné autentizační cookie
- BIO: M2Crypto wrapper pro OpenSSL BIO API
- callback
- DH: wrapper pro OpenSSL DH API
- DSA: wrapper pro OpenSSL DSA API
- Err: wrapper pro OpenSSL Error API
- EVP: wrapper pro OpenSSL EVP API
- ftpslib: M2Crypto klient FTP/TLS
- httpslib: podpora pro httplib (Python verze 1.5.2 a 2.x)
- m2: funkce low level OpenSSL wrapperu
- m2urllib: M2Crypto rozšíření pro urllib pro manipulaci s url adresami ‚https‘
- m2×mlrpclib: M2Crypto rozšíření pro xmlrpclib
-
PGP: M2Crypto PGP2
- constants
- packet
- PublicKey
- PublicKeyRing
- RSA: M2Crypto PGP2 RSA
- Rand: wrapper pro OpenSSL PRNG
- RC4: wrapper pro OpenSSL RC4 API
- RSA: wrapper pro OpenSSL RSA API
- SMIME: wrapper pro OpenSSL S/MIME API
-
SSL: M2Crypto SSL
- cb
- Cipher
- Connection: M2Crypto.SSL.Connection
- Context: M2Crypto.SSL.Context
- Error: M2Crypto.SSL.Error
- Session
- ssl_dispatcher
- SSLServer
- timeout
- threading: M2Crypto vlákna
- util
- X509: M2Crypto wrapper pro OpenSSL X509 API
Knihovna požaduje Python verze 2.x, OpenSSL 0.9.7 a SWIG 1.3.2×.
Instalace na unixovém stroji
$ unzip m2crypto-0.13.zip $ cd m2crypto-0.13 $ python setup.py build # python setup.py install $ cd tests $ python alltests.py
Instalace na Windows
Podle použitých překladačů se může instalace ubírat dvěma směry. Liší se v knihovnách OpenSSL a v příkazech při překladu.
- 1. MinGW gcc
-
Knihovny použité při tomto řešení jsou libeay32.a alibssl32.a a mohou se nalézat kdekoliv ve vaší proměnné PATH. Ke správnému překladu také potřebujete knihovnu libpython2[123].a vytvořenou z vaší verze Pythonu (viz sebsauvage.net/python/mingw.html).
Překlad M2Crypto spustíte příkazem:
python setup.py build -cmingw32
a instalaci:
python setup.py install cd tests python alltests.py
- 2. MSVC++ nebo BC++
-
Pro MSVC++ používejte knihovny libeay32.lib a ssleay32.lib. Pro BC++ se používají knihovny vytvořené pomocí MSVC++, které jsou zkonvertovány programem coff2omf.exe. Můžete je nazvat např. libeay32_bc.lib assleay32_bc.lib.
Budete také potřebovat výše zmíněnou knihovnu pro importování Pythonu, kterou musíte stejným programem zkonvertovat.
Překlad pomocí prvního, resp. druhého překladače spustíte příkazy:
python setup.py build python setup.py build -cbcpp
Instalovat můžete stejně jako výše:
python setup.py install cd tests python alltests.py
Instalace na Mac OS X
Soubor Makefile.osx předpokládá, že potřebné SSL knihovny(libssl.a a libcrypto.a) jsou nainstalovány v adresáři /usr/local/lib. Můžeme tedy nainstalovat OpenSSL do tohoto adresáře (i z důvodu případné kolize programů závisejících na již nainstalovaném OpenSSL, např. Apache):
./config --prefix=/usr/local --openssldir=/usr/local/openssl make ...
Instalaci M2Crypto začneme v adresáři swig, kde zadáme příkaz:
make -f Makefile.osx
Tím jsme vytvořili rozhraní mezi M2Crypto a OpenSSL. Nyní můžeme překopírovat adresář M2Crypto do site-packages vaší verze Pythonu. Pro testování funkčnosti můžeme v adresáři tests spustit příkaz python alltests.py.