{ "info": { "author": "Toshio Kuratomi", "author_email": "toshio@fedoraproject.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: Python Software Foundation License", "Programming Language :: Python :: 2.4", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Security :: Cryptography" ], "description": "\nThe ssl.match_hostname() function from Python 3.7\n=================================================\n\nThe Secure Sockets Layer is only actually *secure*\nif you check the hostname in the certificate returned\nby the server to which you are connecting,\nand verify that it matches to hostname\nthat you are trying to reach.\n\nBut the matching logic, defined in `RFC2818`_,\ncan be a bit tricky to implement on your own.\nSo the ``ssl`` package in the Standard Library of Python 3.2\nand greater now includes a ``match_hostname()`` function\nfor performing this check instead of requiring every application\nto implement the check separately.\n\nThis backport brings ``match_hostname()`` to users\nof earlier versions of Python.\nSimply make this distribution a dependency of your package,\nand then use it like this::\n\n from backports.ssl_match_hostname import match_hostname, CertificateError\n [...]\n sslsock = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_SSLv23,\n cert_reqs=ssl.CERT_REQUIRED, ca_certs=...)\n try:\n match_hostname(sslsock.getpeercert(), hostname)\n except CertificateError, ce:\n ...\n\nBrandon Craig Rhodes is merely the packager of this distribution;\nthe actual code inside comes from Python 3.7 with small changes for\nportability.\n\n\nRequirements\n------------\n\n* If you need to use this on Python versions earlier than 2.6 you will need to\n install the `ssl module`_. From Python 2.6 upwards ``ssl`` is included in\n the Python Standard Library so you do not need to install it separately.\n\n.. _`ssl module`:: https://pypi.python.org/pypi/ssl\n\nHistory\n-------\n\n* This function was introduced in python-3.2\n* It was updated for python-3.4a1 for a CVE \n (backports-ssl_match_hostname-3.4.0.1)\n* It was updated from RFC2818 to RFC 6125 compliance in order to fix another\n security flaw for python-3.3.3 and python-3.4a5\n (backports-ssl_match_hostname-3.4.0.2)\n* It was updated in python-3.5 to handle IPAddresses in ServerAltName fields\n (something that backports.ssl_match_hostname will do if you also install the\n ipaddress library from pypi).\n* It was updated in python-3.7 to handle IPAddresses without the ipaddress library and dropped\n support for partial wildcards\n\n.. _`ipaddress module`:: https://pypi.python.org/pypi/ipaddress\n\n.. _RFC2818: http://tools.ietf.org/html/rfc2818.html\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bitbucket.org/brandon/backports.ssl_match_hostname", "keywords": "", "license": "Python Software Foundation License", "maintainer": "", "maintainer_email": "", "name": "backports.ssl_match_hostname", "package_url": "https://pypi.org/project/backports.ssl_match_hostname/", "platform": "", "project_url": "https://pypi.org/project/backports.ssl_match_hostname/", "project_urls": { "Homepage": "http://bitbucket.org/brandon/backports.ssl_match_hostname" }, "release_url": "https://pypi.org/project/backports.ssl_match_hostname/3.7.0.1/", "requires_dist": null, "requires_python": "", "summary": "The ssl.match_hostname() function from Python 3.5", "version": "3.7.0.1" }, "last_serial": 4689314, "releases": { "3.2a3": [ { "comment_text": "", "digests": { "md5": "42adbd3c15d78eb6b7b7c654ec5c717c", "sha256": "ef78d0532f11c4403288a6a4a7e80da2f8924e6b0d662349bb86c09c6fea8b31" }, "downloads": -1, "filename": "backports.ssl_match_hostname-3.2a3.tar.gz", "has_sig": false, "md5_digest": "42adbd3c15d78eb6b7b7c654ec5c717c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2448, "upload_time": "2010-10-16T00:40:14", "url": "https://files.pythonhosted.org/packages/f3/d8/77d5967f6648ef4d75acc8be8aa73020c0a5272d28eec1183607df4efcc2/backports.ssl_match_hostname-3.2a3.tar.gz" } ], "3.4.0.1": [ { "comment_text": "", "digests": { "md5": "a7402a991cce1e00c30df0142d511458", "sha256": "8ae5c577c12a39cc403444db7769458a784382a5f8ce07190297387df2255c41" }, "downloads": -1, "filename": "backports.ssl_match_hostname-3.4.0.1.tar.gz", "has_sig": false, "md5_digest": "a7402a991cce1e00c30df0142d511458", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9422, "upload_time": "2013-09-02T19:11:04", "url": "https://files.pythonhosted.org/packages/b0/5f/b718c15078d9c873bc3b0630a925f572535623cb0fcdc2ba8565f0d825df/backports.ssl_match_hostname-3.4.0.1.tar.gz" } ], "3.4.0.2": [ { "comment_text": "", "digests": { "md5": "788214f20214c64631f0859dc79f23c6", "sha256": "07410e7fb09aab7bdaf5e618de66c3dac84e2e3d628352814dc4c37de321d6ae" }, "downloads": -1, "filename": "backports.ssl_match_hostname-3.4.0.2.tar.gz", "has_sig": true, "md5_digest": "788214f20214c64631f0859dc79f23c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5151, "upload_time": "2013-10-27T19:24:08", "url": "https://files.pythonhosted.org/packages/3a/15/f9e48bfd2b971ade10ad0c03babab057791c260b05322cbd3f47e27be108/backports.ssl_match_hostname-3.4.0.2.tar.gz" } ], "3.5.0.1": [ { "comment_text": "", "digests": { "md5": "c03fc5e2c7b3da46b81acf5cbacfe1e6", "sha256": "502ad98707319f4a51fa2ca1c677bd659008d27ded9f6380c79e8932e38dcdf2" }, "downloads": -1, "filename": "backports.ssl_match_hostname-3.5.0.1.tar.gz", "has_sig": true, "md5_digest": "c03fc5e2c7b3da46b81acf5cbacfe1e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5605, "upload_time": "2015-12-19T22:33:23", "url": "https://files.pythonhosted.org/packages/76/21/2dc61178a2038a5cb35d14b61467c6ac632791ed05131dda72c20e7b9e23/backports.ssl_match_hostname-3.5.0.1.tar.gz" } ], "3.7.0.1": [ { "comment_text": "", "digests": { "md5": "32d2f593af01a046bec3d2f5181a420a", "sha256": "bb82e60f9fbf4c080eabd957c39f0641f0fc247d9a16e31e26d594d8f42b9fd2" }, "downloads": -1, "filename": "backports.ssl_match_hostname-3.7.0.1.tar.gz", "has_sig": true, "md5_digest": "32d2f593af01a046bec3d2f5181a420a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5722, "upload_time": "2019-01-12T22:25:58", "url": "https://files.pythonhosted.org/packages/ff/2b/8265224812912bc5b7a607c44bf7b027554e1b9775e9ee0de8032e3de4b2/backports.ssl_match_hostname-3.7.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "32d2f593af01a046bec3d2f5181a420a", "sha256": "bb82e60f9fbf4c080eabd957c39f0641f0fc247d9a16e31e26d594d8f42b9fd2" }, "downloads": -1, "filename": "backports.ssl_match_hostname-3.7.0.1.tar.gz", "has_sig": true, "md5_digest": "32d2f593af01a046bec3d2f5181a420a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5722, "upload_time": "2019-01-12T22:25:58", "url": "https://files.pythonhosted.org/packages/ff/2b/8265224812912bc5b7a607c44bf7b027554e1b9775e9ee0de8032e3de4b2/backports.ssl_match_hostname-3.7.0.1.tar.gz" } ] }