M2Crypto 0.46.2__tar.gz → 0.48.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {m2crypto-0.46.2 → m2crypto-0.48.0}/CHANGES +83 -1
- m2crypto-0.48.0/INSTALL.md +157 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/MANIFEST.in +2 -2
- {m2crypto-0.46.2 → m2crypto-0.48.0}/PKG-INFO +30 -41
- m2crypto-0.46.2/README.rst → m2crypto-0.48.0/README.md +29 -41
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/z2s.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/install_dir/lib/python/zope/server/http/https_server.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/install_dir/lib/python/zope/server/http/publisherhttps_server.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/bio_mem_rw.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/dhtest.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/dsa_bench.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/dsatest.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ec/ecdhtest.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ec/ecdsa_bench.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ec/ecdsatest.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/https.howto/get_https.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/START.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/START_xmlrpc.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/asyncore.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/auth_handler.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/counter.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/filesys.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/ftp_server.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/http_server.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/put_handler.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/xmlrpc_handler.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/START.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/START_xmlrpc.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/counter.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/ftp_server.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/http_server.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/xmlrpc_handler.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/pgp/pgpstep.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/pkcs7/test.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/rsa_bench.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/rsatest.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/sendsmime.py +6 -8
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/test.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/unsmime.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/decrypt.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/dv.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/encrypt.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/se.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/sendsmime.py +6 -8
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/sign.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/verify.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echo-eg.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echo.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echod-async.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echod-eg1.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echod_lib.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/https_cli.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/https_cli_async.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/s_client.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/s_server.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/server3.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/sess.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/sess2.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/somelib.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/twistedsslclient.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/twistedsslserver.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/xmlrpc_cli.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/xmlrpc_srv.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/tinderbox/build_lib.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/ca.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/certdata2pem.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/demo1.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/proxy_info.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/proxy_init.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/proxylib.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/x509auth.py +0 -1
- m2crypto-0.48.0/doc/.gitignore +3 -0
- m2crypto-0.48.0/doc/HOWTOs.md +12 -0
- m2crypto-0.46.2/doc/M2Crypto.SSL.rst → m2crypto-0.48.0/doc/M2Crypto.SSL.md +31 -23
- m2crypto-0.46.2/doc/M2Crypto.rst → m2crypto-0.48.0/doc/M2Crypto.md +98 -58
- {m2crypto-0.46.2 → m2crypto-0.48.0}/doc/Makefile +1 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/doc/conf.py +7 -3
- m2crypto-0.48.0/doc/howto.ca.md +380 -0
- m2crypto-0.46.2/doc/howto.migration.rst → m2crypto-0.48.0/doc/howto.migration.md +69 -56
- m2crypto-0.48.0/doc/howto.smime.md +818 -0
- m2crypto-0.48.0/doc/howto.ssl.md +242 -0
- m2crypto-0.48.0/doc/index.md +16 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/doc/requirements.txt +1 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/setup.cfg +7 -5
- {m2crypto-0.46.2 → m2crypto-0.48.0}/setup.py +85 -12
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/ASN1.py +125 -17
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/AuthCookie.py +7 -2
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/EVP.py +34 -17
- m2crypto-0.48.0/src/M2Crypto/Engine.py +322 -0
- m2crypto-0.48.0/src/M2Crypto/Provider.py +152 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/Rand.py +5 -6
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SMIME.py +66 -2
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/Checker.py +27 -18
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/Connection.py +16 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/timeout.py +20 -4
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/X509.py +281 -16
- m2crypto-0.48.0/src/M2Crypto/__init__.py +52 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/_m2crypto.pyi +87 -2
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/httpslib.py +11 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/types.py +4 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/util.py +4 -10
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto.egg-info/PKG-INFO +30 -41
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto.egg-info/SOURCES.txt +30 -20
- m2crypto-0.48.0/src/M2Crypto.egg-info/requires.txt +1 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_aes.i +0 -3
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_asn1.i +13 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_bio.i +0 -48
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_ec.i +1 -1
- m2crypto-0.48.0/src/SWIG/_engine.i +223 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_evp.i +1 -23
- m2crypto-0.48.0/src/SWIG/_lib.h +62 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_lib.i +1 -9
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_m2crypto.i +10 -11
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_pkcs7.i +56 -0
- m2crypto-0.48.0/src/SWIG/_provider.i +440 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_py3k_compat.i +0 -19
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_python_logging.i +3 -3
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_rsa.i +0 -4
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_ssl.i +12 -5
- m2crypto-0.48.0/src/SWIG/_threads.i +23 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_x509.i +75 -36
- m2crypto-0.48.0/tests/__init__.py +90 -0
- m2crypto-0.48.0/tests/crl_data/certs/revoked_cert.pem +18 -0
- m2crypto-0.48.0/tests/crl_data/certs/revoked_key.pem +28 -0
- m2crypto-0.48.0/tests/crl_data/certs/revoking_ca.pem +19 -0
- m2crypto-0.48.0/tests/crl_data/certs/revoking_ca_key.pem +28 -0
- m2crypto-0.48.0/tests/crl_data/certs/revoking_crl.pem +12 -0
- m2crypto-0.48.0/tests/crl_data/certs/valid_cert.pem +18 -0
- m2crypto-0.48.0/tests/crl_data/certs/valid_key.pem +28 -0
- m2crypto-0.48.0/tests/crl_data/create_certs_to_revoke.py +91 -0
- m2crypto-0.48.0/tests/idn_server.pem +105 -0
- m2crypto-0.48.0/tests/idn_server_key.pem +27 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/makecerts.py +61 -12
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_asn1.py +0 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_authcookie.py +32 -1
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_bio.py +35 -45
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_bio_membuf.py +9 -2
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_bio_ssl.py +70 -53
- m2crypto-0.48.0/tests/test_engine.py +66 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_evp.py +21 -29
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_init.py +3 -1
- m2crypto-0.48.0/tests/test_provider.py +332 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_rand.py +1 -4
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_rsa.py +51 -55
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_smime.py +157 -12
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_ssl.py +215 -61
- m2crypto-0.48.0/tests/test_starttls.py +112 -0
- m2crypto-0.48.0/tests/test_util.py +49 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_x509.py +304 -25
- m2crypto-0.46.2/INSTALL.rst +0 -142
- m2crypto-0.46.2/doc/HOWTOs.rst +0 -12
- m2crypto-0.46.2/doc/howto.ca.rst +0 -370
- m2crypto-0.46.2/doc/howto.smime.rst +0 -805
- m2crypto-0.46.2/doc/howto.ssl.rst +0 -132
- m2crypto-0.46.2/doc/index.rst +0 -19
- m2crypto-0.46.2/src/M2Crypto/__init__.py +0 -41
- m2crypto-0.46.2/src/SWIG/_lib.h +0 -17
- m2crypto-0.46.2/src/SWIG/_lib11_compat.i +0 -457
- m2crypto-0.46.2/src/SWIG/_threads.i +0 -67
- m2crypto-0.46.2/src/SWIG/libcrypto-compat.h +0 -62
- m2crypto-0.46.2/src/SWIG/py3k_compat.h +0 -32
- m2crypto-0.46.2/src/SWIG/python_logging.h +0 -11
- m2crypto-0.46.2/tests/__init__.py +0 -14
- m2crypto-0.46.2/tests/alltests.py +0 -121
- m2crypto-0.46.2/tests/randpool.dat +0 -0
- m2crypto-0.46.2/tests/sig.p7 +0 -35
- m2crypto-0.46.2/tests/sig.p7s +0 -48
- m2crypto-0.46.2/tests/te_chunked_response.txt +0 -11
- m2crypto-0.46.2/tests/test_util.py +0 -42
- {m2crypto-0.46.2 → m2crypto-0.48.0}/LICENSES/BSD-2-Clause.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/SimpleX509create.README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/SimpleX509create.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/dave.README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/isaac.README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/isaac.httpslib.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/smimeplus.README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/contrib/smimeplus.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/CipherSaber/CipherSaber.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/CipherSaber/cstest1.cs1 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/ZServer/HTTPS_Server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/ZServer/__init__.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/ZServer/medusa/ftps_server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/ZServer/medusa/https_server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/dh1024.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/GuardedFile/GuardedFile.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/GuardedFile/README.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/GuardedFile/TODO.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/GuardedFile/__init__.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/GuardedFile/add.dtml +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/GuardedFile/refresh.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/GuardedFile/version.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/ZSmime/README.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/ZSmime/SmimeTag.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/ZSmime/__init__.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/lib/python/Products/ZSmime/version.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/starts +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/starts.bat +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/utilities/x509_user.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope/z2s.py.diff +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/INSTALL.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/install_dir/lib/python/ZServer/HTTPS_Server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/install_dir/lib/python/ZServer/__init__.py.patch +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/install_dir/lib/python/ZServer/component.xml.patch +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/install_dir/lib/python/ZServer/datatypes.py.patch +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/install_dir/lib/python/ZServer/medusa/https_server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/instance_home/README.txt.patch +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/instance_home/etc/zope.conf.patch +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/instance_home/ssl/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/instance_home/ssl/dh1024.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/Zope27/instance_home/ssl/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/INSTALL.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/install_dir/lib/python/zope/app/server/configure.zcml.patch +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/install_dir/lib/python/zope/app/server/https.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/install_dir/lib/python/zope/server/http/https_serverchannel.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/instance_home/etc/zope.conf.patch +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/instance_home/ssl/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/instance_home/ssl/dh1024.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ZopeX3/instance_home/ssl/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/dsa1024pvtkey.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/dsatest.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ec/ecdsatest.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ec/secp160r1pvtkey.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/https.howto/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/https.howto/dh1024.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/https.howto/https_cli.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/https.howto/orig_https_srv.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/https.howto/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/00_README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/asynchat.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/default_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/dh1024.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/ftps_server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/http_date.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/https_server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/index.html +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/logger.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/m_syslog.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/medusa_gif.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/mime_type_table.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/poison_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/producers.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/redirecting_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/status_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa/virtual_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/00_README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/default_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/dh1024.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/filesys.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/ftps_server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/http_date.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/https_server.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/index.html +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/logger.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/m_syslog.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/medusa_gif.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/poison_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/producers.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/medusa054/status_handler.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/perf/memio.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/perf/sha1.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/pgp/pubring.pgp +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/pgp/secring.pgp +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/pkcs7/pkcs7-thawte.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/rsa.priv.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/rsa.priv0.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/rsa.pub.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/rsa1024pvtkey.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/clear.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/client.p12 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/client.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/client2.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/m2.se.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/ns.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/ns.se.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime/opaque.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/encrypt.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/recipient.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/recipient_key.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/se.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/sign.p7 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/signer.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/smime.howto/signer_key.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/c.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/c_bio.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/ca.der +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/client.p12 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/client.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/dh1024.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echod-forking.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echod-iterative.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echod-thread.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/echod-threading.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/ftp_tls.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/http_cli_20.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/https_srv.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/myapp.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/sess2.ssldump.out +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/socklib.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/ssl/ss.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/tinderbox/killableprocess.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/tinderbox/slave.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/tinderbox/winprocess.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/client2.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/proxy_destroy.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/server-expired.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/demo/x509/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/doc/make.bat +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/pyproject.toml +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/BIO.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/BN.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/DH.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/DSA.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/EC.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/Err.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/RC4.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/RSA.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/Cipher.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/Context.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/SSLError.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/SSLServer.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/Session.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/TwistedProtocolWrapper.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/__init__.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/SSL/cb.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/callback.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/ftpslib.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/m2.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/m2crypto.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/m2urllib.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/m2urllib2.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/m2xmlrpclib.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/py.typed +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto/threading.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto.egg-info/dependency_links.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto.egg-info/not-zip-safe +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/M2Crypto.egg-info/top_level.txt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_bn.i +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_dh.i +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_dsa.i +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_m2crypto.def +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_objects.i +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_rand.i +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_rc4.i +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/_util.i +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/src/SWIG/x509_v_flag.h +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/system_shadowing/sys/types.h +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/README +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/bad_date_cert.crt +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ca.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ca_key.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/der_encoded_seq.b64 +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/dhparams.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/dsa.param.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/dsa.priv.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/dsa.pub.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/easy_rsa.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ec.priv.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ec.pub.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ec.pub2.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ed25519.priv.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ed25519.pub.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/ed25519.pub2.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/fips.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/long_serial_cert.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/pubring.pgp +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/recipient.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/recipient_key.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/rsa.priv.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/rsa.priv2.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/rsa.pub.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/sample-p7.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/server.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/server_key.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/signer.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/signer_key.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_aes.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_bio_file.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_bio_iobuf.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_bn.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_dh.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_dsa.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_ec_curves.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_ecdh.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_ecdsa.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_err.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_obj.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_rc4.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_ssl_offline.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_ssl_win.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_threading.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_timeout.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/test_xmlrpc.py +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/thawte.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/x509.der +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/x509.pem +0 -0
- {m2crypto-0.46.2 → m2crypto-0.48.0}/tests/x509_key.pem +0 -0
|
@@ -1,3 +1,85 @@
|
|
|
1
|
+
0.48.0 - 2026-05-18
|
|
2
|
+
-------------------
|
|
3
|
+
|
|
4
|
+
This release is rather large, because I failed to publish earlier
|
|
5
|
+
version of it (this was supposed to be 0.49.0).
|
|
6
|
+
|
|
7
|
+
- doc: another move … this time to Codeberg (and communication to
|
|
8
|
+
Matrix)
|
|
9
|
+
- test(smime): parametrize test_write_pkcs7_der
|
|
10
|
+
- test(smime): fix test_signEncryptDecryptVerify
|
|
11
|
+
- fix(util): return bytes from passphrase callbacks
|
|
12
|
+
- fix(SSL.Checker): add IDN Chinese name
|
|
13
|
+
- test(ssl): add IDN certificate fixture coverage
|
|
14
|
+
- test(ssl): cover IDN hostname matching in Checker
|
|
15
|
+
- doc: update expected Name format in migration guide
|
|
16
|
+
- fix(smime): S/MIME signature verification for Outlook and Thunderbird
|
|
17
|
+
- fix(provider): handle OSSL_STORE_INFO_PUBKEY compat. for OpenSSL < 3.2
|
|
18
|
+
- fix: cast X509_dup in sk_X509_deep_copy to avoid type mismatch
|
|
19
|
+
- fix(smime): S/MIME signature verification for Outlook and Thunderbird
|
|
20
|
+
- fix(smime): remove obsolete Python pre-3.6 constructs
|
|
21
|
+
- ci: run on Codeberg with forgejo_runner
|
|
22
|
+
- doc: clarify the status of the project
|
|
23
|
+
- fix(provider): adjust the CI run on Gitea for the older OpenSSL on
|
|
24
|
+
Debian
|
|
25
|
+
- fix(evp): narrow digest and BIO pointers for mypy
|
|
26
|
+
- fix(init): acommodate modern packaging API
|
|
27
|
+
- doc: IRC channel is on Libera, Ergo was a wrong idea
|
|
28
|
+
- fix(tests): remove duplicate definition of IS_DEBIAN in test_ssl
|
|
29
|
+
- fix(test_bio_ssl): fix TLS 1.3 deadlock and add socket timeouts
|
|
30
|
+
- fix(test_bio_ssl): replace sys.exit() with self.fail() to prevent test
|
|
31
|
+
process crash
|
|
32
|
+
- ci: publish to PyPI with Sigstore attestations via Trusted Publishing
|
|
33
|
+
- fix(authcookie): handle CookieError from Python 3.13.12+
|
|
34
|
+
(CVE-2026-0672)
|
|
35
|
+
- ci(leap): use setup.py bdist_wheel to bypass old pip PEP 517 wrapper
|
|
36
|
+
- fix(util): replace is_32bit with struct.calcsize and update tests
|
|
37
|
+
- ci: add FreeBSD SourceHut CI build script
|
|
38
|
+
- fix(swig): avoid clang GNUC pragma block before _lib.h
|
|
39
|
+
- fix(provider): don't abuse TemporaryDirectory to be mkdtemp, use that
|
|
40
|
+
directly.
|
|
41
|
+
- fix(provider): gate provider APIs for OpenSSL 1.1.1
|
|
42
|
+
- feat(provider): add key generation and destruction methods
|
|
43
|
+
- docs(provider): add comprehensive documentation to Provider module
|
|
44
|
+
- fix(provider): better exception handling
|
|
45
|
+
- doc: add a simple AGENTS.md
|
|
46
|
+
- feat(engine): add availability check, lifecycle helpers, and safer
|
|
47
|
+
cleanup
|
|
48
|
+
- doc(engine): Improve documentation and example of using Engine module
|
|
49
|
+
|
|
50
|
+
0.47.0 - 2026-02-08
|
|
51
|
+
-------------------
|
|
52
|
+
|
|
53
|
+
- feat: added full SWIG bindings for the ASN1_UTCTIME
|
|
54
|
+
- refactor(SWIG): adopt Python Buffer Protocol for
|
|
55
|
+
X509_NAME_ENTRY_set_data
|
|
56
|
+
- fix: allow 64-bit time_t on 32-bit systems in test_is32bit
|
|
57
|
+
- feat(provider): add initial OpenSSL providers support
|
|
58
|
+
- feat: stop supporting 32bit packages on Windows
|
|
59
|
+
- fix: improve detection of OpenSSL on Windows
|
|
60
|
+
- ci: run doctest
|
|
61
|
+
- fix: _matchIPAddress is failing
|
|
62
|
+
- feat: Add degenerate PKCS7 (.p7c) support
|
|
63
|
+
- fix(setup): add `packaging` as a requirement
|
|
64
|
+
- feat(asn1): introduce dedicated ASN1_UTCTIME class
|
|
65
|
+
- feat(CRL): add content of m2crypto-0.21.1-x509_crl.patch
|
|
66
|
+
- refactor(x509): CRL handling and testing
|
|
67
|
+
- feat: add function to provide the equivalent of `openssl ciphers`.
|
|
68
|
+
- fix(X509): refactor new_extension to prevent memory corruption
|
|
69
|
+
- ci: add tests showing the use of M2Crypto for STARTTLS protocol
|
|
70
|
+
- doc: convert documentation to MyST
|
|
71
|
+
- doc: various improvements of documentation
|
|
72
|
+
- revert: remove support for Engine
|
|
73
|
+
- fix(engine): make the compilation of Engine conditional on
|
|
74
|
+
OPENSSL_NO_ENGINE
|
|
75
|
+
- fix(https): make HTTPS Connection work with Proxy
|
|
76
|
+
- doc: add an example of using HTTPS with PKCS#11 Engine
|
|
77
|
+
|
|
78
|
+
0.46.2 - 2025-10-02
|
|
79
|
+
-------------------
|
|
80
|
+
|
|
81
|
+
- fix[m2xmlrpclib]: make the module compatible with Python 3.6
|
|
82
|
+
|
|
1
83
|
0.46.1 - 2025-10-02
|
|
2
84
|
-------------------
|
|
3
85
|
|
|
@@ -285,7 +367,7 @@
|
|
|
285
367
|
-------------------
|
|
286
368
|
|
|
287
369
|
- 471582f - setup.py: use ${CPP} as path to cpp <Duncan Macleod>
|
|
288
|
-
- efb1580 - Bump pipeline OpenSSL from 1.1.0i to 1.1.0j
|
|
370
|
+
- efb1580 - Bump pipeline OpenSSL from 1.1.0i to 1.1.0j
|
|
289
371
|
- 35bb71b - Stub wchar_t helpers and ignore unused WCHAR defs <makepost>
|
|
290
372
|
- effc7be - Add type comment to setup.py <Matěj Cepl>
|
|
291
373
|
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Installing M2Crypto
|
|
2
|
+
|
|
3
|
+
```{contents}
|
|
4
|
+
```
|
|
5
|
+
|
|
6
|
+
## Pre-requisites
|
|
7
|
+
|
|
8
|
+
The following is required to *use* M2Crypto (once installed):
|
|
9
|
+
|
|
10
|
+
- `Python 3.6` or newer
|
|
11
|
+
- `OpenSSL 1.1.1t` or newer
|
|
12
|
+
|
|
13
|
+
\<!-- alpine/32bit OpenSSL 3.3.1, swig 4.2.1, Python 3.12.3
|
|
14
|
+
fedora OpenSSL 3.2.1, swig 4.2.1, Python 3.12.3
|
|
15
|
+
rawhide OpenSSL 3.2.2, swig 4.2.1, Python 3.13.0~b3
|
|
16
|
+
leap OpenSSL 3.1.4, swig 4.1.1, Python 3.6.15
|
|
17
|
+
tumbleweed OpenSSL 3.1.4, swig 4.2.1, Python 3.11.9
|
|
18
|
+
python3 OpenSSL 3.0.13, swig 4.1.0, Python 3.11.2
|
|
19
|
+
python3-32bit OpenSSL 3.0.13, swig 4.1.0, Python 3.11.2
|
|
20
|
+
python39 OpenSSL 3.0.13, swig 4.1.0, Python 3.11.2
|
|
21
|
+
windows OPenSSL 1.1.1w, swig 4.1.1, Python 3.10.\* -->
|
|
22
|
+
|
|
23
|
+
To *install* M2Crypto, you must be able to compile and link C sources
|
|
24
|
+
against Python and OpenSSL headers/libraries. For example on a Debian-based
|
|
25
|
+
system the following packages are needed:
|
|
26
|
+
|
|
27
|
+
- `build-essential`
|
|
28
|
+
- `python3-dev` and/or `python-dev`
|
|
29
|
+
- `libssl-dev`
|
|
30
|
+
- `swig 4.1.0` or newer (for compatibility with Python 3.12, for
|
|
31
|
+
older Pythons the default platform swig should be enough).
|
|
32
|
+
|
|
33
|
+
## Installing on Unix-like systems, including Cygwin
|
|
34
|
+
|
|
35
|
+
(not tested and most likely obsolete, updated information for building
|
|
36
|
+
with Cygwin are welcome).:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
$ tar zxf m2crypto-<version>.tar.gz
|
|
40
|
+
$ cd m2crypto-<version>
|
|
41
|
+
$ python setup.py build
|
|
42
|
+
$ python setup.py install
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If you have installed setuptools you can also optionally run tests like
|
|
46
|
+
this::
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
$ python -munittest discover -v tests
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This assumes OpenSSL is installed in `/usr`. You can provide an
|
|
53
|
+
alternate OpenSSL prefix location with --openssl option to
|
|
54
|
+
`build\_ext` (or `build`) command. So, for example, if you
|
|
55
|
+
build your local version of OpenSSL and install it with
|
|
56
|
+
`/usr/local` prefix (your includes are in
|
|
57
|
+
`/usr/local/include/openssl` and libs in `/usr/local/lib`),
|
|
58
|
+
then you would add `--openssl=/usr/local` to your `build`
|
|
59
|
+
command.
|
|
60
|
+
|
|
61
|
+
## Differences when installing on Windows
|
|
62
|
+
|
|
63
|
+
Binary wheels for many Windows conifgurations are available on
|
|
64
|
+
PyPI. Try selecting a version, selecting a job that matches your
|
|
65
|
+
Python version, then going to the "Artifacts" tab and downloading
|
|
66
|
+
an installer.
|
|
67
|
+
|
|
68
|
+
01. Install the latest `Build Tools for Visual Studio 2019`.
|
|
69
|
+
See <https://visualstudio.microsoft.com/downloads/> under "All
|
|
70
|
+
Downloads" -> "Tools for Visual Studio 2019".
|
|
71
|
+
|
|
72
|
+
02. In the installer, select "C++ Build Tools", install, and
|
|
73
|
+
reboot if necessary.
|
|
74
|
+
|
|
75
|
+
03. Install the latest full (not `Light`) `OpenSSL`
|
|
76
|
+
for your architecture (`Win64`/`Win32`). Current
|
|
77
|
+
version as of this writing is `1.1.1d`. Make note
|
|
78
|
+
of the directory to which you install `OpenSSL` from
|
|
79
|
+
<https://slproweb.com/products/Win32OpenSSL.html>.
|
|
80
|
+
|
|
81
|
+
04. In `PowerShell`, install the `Chocolatey` package manager. I used this command from their website:
|
|
82
|
+
Set-ExecutionPolicy Bypass -Scope Process -Force;
|
|
83
|
+
|
|
84
|
+
> iex ((New-Object System.Net.WebClient).DownloadString('<https://chocolatey.org/install.ps1>'))\`
|
|
85
|
+
|
|
86
|
+
05. Install `swig` with `Chocolatey` (in `PowerShell`). `choco install -r -y swig`
|
|
87
|
+
|
|
88
|
+
06. Install the `pywin32` dependency. Run `pip install
|
|
89
|
+
pywin32`. If you have problems, try first running `pip
|
|
90
|
+
install wheel`. To get `pip` to target a specific Python
|
|
91
|
+
installation, try launching it using `py -[version] -m pip
|
|
92
|
+
install [module]`. Note: you may need to use an elevated
|
|
93
|
+
(administrator) `PowerShell` to install Python modules.
|
|
94
|
+
|
|
95
|
+
07. Get the latest `m2crypto` code. If you have `git` installed,
|
|
96
|
+
run `git clone https://git.sr.ht/~mcepl/m2crypto`. Otherwise,
|
|
97
|
+
download and extract the code from SourceHut:
|
|
98
|
+
<https://git.sr.ht/~mcepl/m2crypto/archive/master.tar.gz>
|
|
99
|
+
|
|
100
|
+
08. Use `cd` to change into the directory `m2crypto` was cloned/extracted to.
|
|
101
|
+
|
|
102
|
+
09. Assuming `python` launches your desired Python interpreter
|
|
103
|
+
version, run `python setup.py build --openssl="C:\Program
|
|
104
|
+
Files\OpenSSL-Win64" --bundledlls`, replacing `C:\Program
|
|
105
|
+
Files\OpenSSL-Win64` with the directory to which you installed
|
|
106
|
+
`OpenSSL`. (On some systems you can use the `py` launcher
|
|
107
|
+
to specify a Python version to use, run `py -h` for more
|
|
108
|
+
information.)
|
|
109
|
+
|
|
110
|
+
10. Generate the installable files. `python.exe setup.py
|
|
111
|
+
bdist_wheel bdist_wininst bdist_msi`.
|
|
112
|
+
|
|
113
|
+
11. Install the module. `cd` into the `dist` directory and run
|
|
114
|
+
`pip install M2Crypto-0.35.2-cp38-cp38-win_amd64.whl`,
|
|
115
|
+
replacing the filename with the generated `.whl` file. If
|
|
116
|
+
you have problems, try first running `pip install wheel`. To
|
|
117
|
+
get `pip` to target a specific Python installation,
|
|
118
|
+
try launching it using `py -[version] -m pip install
|
|
119
|
+
[module]`. Alternatively, you can run the generated `.exe`
|
|
120
|
+
or `.msi` installer. Note: you may need to use an elevated
|
|
121
|
+
(administrator) `PowerShell` to install Python modules.
|
|
122
|
+
|
|
123
|
+
(needs updating)
|
|
124
|
+
|
|
125
|
+
:::{NOTE}
|
|
126
|
+
The following instructions for building M2Crypto with MINGW
|
|
127
|
+
are from M2Crypto 0.12. These instructions should continue to work
|
|
128
|
+
for this release, although I have not tested them.
|
|
129
|
+
:::
|
|
130
|
+
|
|
131
|
+
Read Sebastien Sauvage's webpage:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
http://sebsauvage.net/python/mingw.html
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
For `setup.py build` you may need to use parameter `-cmingw32`.
|
|
138
|
+
|
|
139
|
+
## MacOSX
|
|
140
|
+
|
|
141
|
+
Apple does not provide on more recent versions of Mac OS X (at least
|
|
142
|
+
certainly [since 10.11]) any version of OpenSSL, so it is necessary to
|
|
143
|
+
use `brew` or similar packaging systems to install third party
|
|
144
|
+
packages. A Mac OS X users suggested, that this series of commands gave
|
|
145
|
+
him a working copy of M2Crypto on his system:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
$ brew install openssl && brew install swig
|
|
149
|
+
$ brew --prefix openssl
|
|
150
|
+
/usr/local/opt/openssl
|
|
151
|
+
$ LDFLAGS="-L$(brew --prefix openssl)/lib" \
|
|
152
|
+
CFLAGS="-I$(brew --prefix openssl)/include" \
|
|
153
|
+
SWIG_FEATURES="-I$(brew --prefix openssl)/include" \
|
|
154
|
+
pip install m2crypto
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
[since 10.11]: https://gitlab.com/m2crypto/m2crypto/merge_requests/7#note_2581821
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: M2Crypto
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.48.0
|
|
4
4
|
Summary: A Python crypto and SSL toolkit
|
|
5
5
|
Author: Ng Pheng Siong
|
|
6
6
|
Author-email: ngps@sandbox.rulemaker.net
|
|
@@ -8,10 +8,10 @@ Maintainer: Matej Cepl
|
|
|
8
8
|
Maintainer-email: mcepl@cepl.eu
|
|
9
9
|
License: BSD-2-Clause
|
|
10
10
|
Project-URL: home_page, https://sr.ht/~mcepl/m2crypto/
|
|
11
|
-
Project-URL: source, https://
|
|
11
|
+
Project-URL: source, https://codeberg.org/mcepl/m2crypto/
|
|
12
12
|
Project-URL: documentation, https://m2crypto.readthedocs.io/en/latest/
|
|
13
13
|
Project-URL: report, https://lists.sr.ht/~mcepl/m2crypto
|
|
14
|
-
Project-URL: changelog, https://
|
|
14
|
+
Project-URL: changelog, https://codeberg.org/mcepl/m2crypto/src/branch/master/CHANGES
|
|
15
15
|
Keywords: cryptography,openssl
|
|
16
16
|
Classifier: Development Status :: 5 - Production/Stable
|
|
17
17
|
Classifier: Intended Audience :: Developers
|
|
@@ -29,33 +29,34 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
29
29
|
Classifier: Programming Language :: Python :: 3.11
|
|
30
30
|
Classifier: Programming Language :: Python :: 3.12
|
|
31
31
|
Requires-Python: >=3.6
|
|
32
|
-
Description-Content-Type: text/
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
33
|
License-File: LICENSES/BSD-2-Clause.txt
|
|
34
|
+
Requires-Dist: packaging
|
|
34
35
|
Dynamic: license-file
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
**documentation**: <https://m2crypto.readthedocs.io/>\
|
|
38
|
+
**email list**: <https://lists.sr.ht/~mcepl/m2crypto> ([subscribe via email])\
|
|
39
|
+
**discussion channel**: <matrix:r/m2crypto:ceplovi.cz>\
|
|
40
|
+
**issue tracker**: |-\
|
|
41
|
+
<https://todo.sr.ht/~mcepl/m2crypto> (R/O, please\
|
|
42
|
+
report issues via the email list).\
|
|
43
|
+
**maintainer**: "Matěj Cepl"\
|
|
44
|
+
**web-Site**: <https://codeberg.org/mcepl/m2crypto/>
|
|
39
45
|
|
|
40
|
-
|
|
41
|
-
:Web-Site: https://sr.ht/~mcepl/m2crypto/
|
|
42
|
-
:Documentation: https://m2crypto.readthedocs.io/
|
|
43
|
-
:IRC channel: irc://irc.ergo.chat/#m2crypto
|
|
44
|
-
:Email list: https://lists.sr.ht/~mcepl/m2crypto (`subscribe via email`_)
|
|
45
|
-
:Issue tracker: https://todo.sr.ht/~mcepl/m2crypto (R/O, please
|
|
46
|
-
report issues via the email list).
|
|
46
|
+
# M2Crypto
|
|
47
47
|
|
|
48
|
-
M2Crypto = Python + OpenSSL + SWIG
|
|
49
|
-
----------------------------------
|
|
48
|
+
## M2Crypto = Python + OpenSSL + SWIG
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
~~~{image} https://builds.sr.ht/~mcepl.svg
|
|
51
|
+
:alt: builds.sr.ht status
|
|
52
|
+
:target: https://builds.sr.ht/~mcepl?
|
|
53
|
+
~~~
|
|
54
54
|
|
|
55
|
-
**NOTE: This library is currently in maintenance mode
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
**NOTE: This library is currently in maintenance mode (and it has been
|
|
56
|
+
in it since 2014 and I don’t plan to stop maintaining it anytime soon).
|
|
57
|
+
For new applications we recommend using a more modern alternative such
|
|
58
|
+
as** [PyCA/cryptography]. **Examples of how to migrate can be found in**
|
|
59
|
+
[the documentation].
|
|
59
60
|
|
|
60
61
|
M2Crypto is a crypto and SSL toolkit for Python.
|
|
61
62
|
|
|
@@ -65,24 +66,17 @@ M2Crypto comes with the following:
|
|
|
65
66
|
|
|
66
67
|
- **RSA**, **DSA**, **DH**, **HMACs**, **message digests**,
|
|
67
68
|
**symmetric ciphers** including **AES**,
|
|
68
|
-
|
|
69
69
|
- **TLS** functionality to implement **clients and servers**.
|
|
70
|
-
|
|
71
70
|
- **Example SSL client and server programs**, which are variously
|
|
72
71
|
**threading**, **forking** or based on **non-blocking socket IO**.
|
|
73
|
-
|
|
74
72
|
- **HTTPS** extensions to Python's **httplib, urllib and xmlrpclib**.
|
|
75
|
-
|
|
76
73
|
- Unforgeable HMAC'ing **AuthCookies** for **web session management**.
|
|
77
|
-
|
|
78
74
|
- **FTP/TLS** client and server.
|
|
79
|
-
|
|
80
75
|
- **S/MIME v2**.
|
|
81
|
-
|
|
82
76
|
- **ZSmime**: An S/MIME messenger for **Zope**.
|
|
83
77
|
|
|
84
78
|
We care a lot about stable API and all Python methods should be
|
|
85
|
-
preserved, note however that
|
|
79
|
+
preserved, note however that `m2.` namespace is considered internal to
|
|
86
80
|
the library and it doesn't have to be preserved. If however some change
|
|
87
81
|
to it breaks your app, let us know and we will try to make things
|
|
88
82
|
working for you.
|
|
@@ -96,7 +90,7 @@ To install, see the file INSTALL.
|
|
|
96
90
|
|
|
97
91
|
Look at the tests and demos for example use. Recommended reading before
|
|
98
92
|
deploying in production is "Network Security with OpenSSL" by John Viega,
|
|
99
|
-
Matt Messier and Pravir Chandra, ISBN 059600270X.
|
|
93
|
+
Matt Messier and Pravir Chandra, ISBN [059600270X].
|
|
100
94
|
|
|
101
95
|
Note these caveats:
|
|
102
96
|
|
|
@@ -104,18 +98,13 @@ Note these caveats:
|
|
|
104
98
|
Python side and other objects on the C side, and these may change
|
|
105
99
|
between OpenSSL versions. (Multiple free's lead to crashes very
|
|
106
100
|
quickly, so these should be relatively rare.)
|
|
107
|
-
|
|
108
101
|
- No memory locking/clearing for keys, passphrases, etc. because AFAIK
|
|
109
102
|
Python does not provide the features needed. On the C (OpenSSL) side
|
|
110
103
|
things are cleared when the Python objects are deleted.
|
|
111
104
|
|
|
112
105
|
Have fun! Your feedback is welcome.
|
|
113
106
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
https://cryptography.io/en/latest/
|
|
119
|
-
|
|
120
|
-
.. _`the documentation`:
|
|
121
|
-
https://m2crypto.readthedocs.io/en/latest/howto.migration.html
|
|
107
|
+
[pyca/cryptography]: https://cryptography.io/en/latest/
|
|
108
|
+
[subscribe via email]: mailto:~mcepl/m2crypto+subscribe@lists.sr.ht
|
|
109
|
+
[the documentation]: https://m2crypto.readthedocs.io/en/latest/howto.migration.html
|
|
110
|
+
[059600270X]: https://meta.wikimedia.org/wiki/Special:BookSources/0321480910
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
recommend using a more modern alternative such
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
**documentation**: <https://m2crypto.readthedocs.io/>\
|
|
2
|
+
**email list**: <https://lists.sr.ht/~mcepl/m2crypto> ([subscribe via email])\
|
|
3
|
+
**discussion channel**: <matrix:r/m2crypto:ceplovi.cz>\
|
|
4
|
+
**issue tracker**: |-\
|
|
5
|
+
<https://todo.sr.ht/~mcepl/m2crypto> (R/O, please\
|
|
6
|
+
report issues via the email list).\
|
|
7
|
+
**maintainer**: "Matěj Cepl"\
|
|
8
|
+
**web-Site**: <https://codeberg.org/mcepl/m2crypto/>
|
|
9
|
+
|
|
10
|
+
# M2Crypto
|
|
11
|
+
|
|
12
|
+
## M2Crypto = Python + OpenSSL + SWIG
|
|
13
|
+
|
|
14
|
+
~~~{image} https://builds.sr.ht/~mcepl.svg
|
|
15
|
+
:alt: builds.sr.ht status
|
|
16
|
+
:target: https://builds.sr.ht/~mcepl?
|
|
17
|
+
~~~
|
|
18
|
+
|
|
19
|
+
**NOTE: This library is currently in maintenance mode (and it has been
|
|
20
|
+
in it since 2014 and I don’t plan to stop maintaining it anytime soon).
|
|
21
|
+
For new applications we recommend using a more modern alternative such
|
|
22
|
+
as** [PyCA/cryptography]. **Examples of how to migrate can be found in**
|
|
23
|
+
[the documentation].
|
|
24
24
|
|
|
25
25
|
M2Crypto is a crypto and SSL toolkit for Python.
|
|
26
26
|
|
|
@@ -30,24 +30,17 @@ M2Crypto comes with the following:
|
|
|
30
30
|
|
|
31
31
|
- **RSA**, **DSA**, **DH**, **HMACs**, **message digests**,
|
|
32
32
|
**symmetric ciphers** including **AES**,
|
|
33
|
-
|
|
34
33
|
- **TLS** functionality to implement **clients and servers**.
|
|
35
|
-
|
|
36
34
|
- **Example SSL client and server programs**, which are variously
|
|
37
35
|
**threading**, **forking** or based on **non-blocking socket IO**.
|
|
38
|
-
|
|
39
36
|
- **HTTPS** extensions to Python's **httplib, urllib and xmlrpclib**.
|
|
40
|
-
|
|
41
37
|
- Unforgeable HMAC'ing **AuthCookies** for **web session management**.
|
|
42
|
-
|
|
43
38
|
- **FTP/TLS** client and server.
|
|
44
|
-
|
|
45
39
|
- **S/MIME v2**.
|
|
46
|
-
|
|
47
40
|
- **ZSmime**: An S/MIME messenger for **Zope**.
|
|
48
41
|
|
|
49
42
|
We care a lot about stable API and all Python methods should be
|
|
50
|
-
preserved, note however that
|
|
43
|
+
preserved, note however that `m2.` namespace is considered internal to
|
|
51
44
|
the library and it doesn't have to be preserved. If however some change
|
|
52
45
|
to it breaks your app, let us know and we will try to make things
|
|
53
46
|
working for you.
|
|
@@ -61,7 +54,7 @@ To install, see the file INSTALL.
|
|
|
61
54
|
|
|
62
55
|
Look at the tests and demos for example use. Recommended reading before
|
|
63
56
|
deploying in production is "Network Security with OpenSSL" by John Viega,
|
|
64
|
-
Matt Messier and Pravir Chandra, ISBN 059600270X.
|
|
57
|
+
Matt Messier and Pravir Chandra, ISBN [059600270X].
|
|
65
58
|
|
|
66
59
|
Note these caveats:
|
|
67
60
|
|
|
@@ -69,18 +62,13 @@ Note these caveats:
|
|
|
69
62
|
Python side and other objects on the C side, and these may change
|
|
70
63
|
between OpenSSL versions. (Multiple free's lead to crashes very
|
|
71
64
|
quickly, so these should be relatively rare.)
|
|
72
|
-
|
|
73
65
|
- No memory locking/clearing for keys, passphrases, etc. because AFAIK
|
|
74
66
|
Python does not provide the features needed. On the C (OpenSSL) side
|
|
75
67
|
things are cleared when the Python objects are deleted.
|
|
76
68
|
|
|
77
69
|
Have fun! Your feedback is welcome.
|
|
78
70
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
https://cryptography.io/en/latest/
|
|
84
|
-
|
|
85
|
-
.. _`the documentation`:
|
|
86
|
-
https://m2crypto.readthedocs.io/en/latest/howto.migration.html
|
|
71
|
+
[pyca/cryptography]: https://cryptography.io/en/latest/
|
|
72
|
+
[subscribe via email]: mailto:~mcepl/m2crypto+subscribe@lists.sr.ht
|
|
73
|
+
[the documentation]: https://m2crypto.readthedocs.io/en/latest/howto.migration.html
|
|
74
|
+
[059600270X]: https://meta.wikimedia.org/wiki/Special:BookSources/0321480910
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
26
26
|
# ======================================================================
|
|
27
27
|
|
|
28
|
-
from __future__ import print_function
|
|
29
28
|
|
|
30
29
|
"""Basic infrastructure for asynchronous socket service clients and servers.
|
|
31
30
|
|