{ "info": { "author": "Christian Heimes", "author_email": "christian@python.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Python Software Foundation License", "Natural Language :: English", "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.3", "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.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "============\nwincertstore\n============\n\nwincertstore provides an interface to access Windows' CA and CRL certificates.\nIt uses ctypes and Windows's sytem cert store API through crypt32.dll.\n\n.. warning:: **Security Fix**\n \n wincertstore 0.1 used to return **all** certificates although some are\n **not** suitable to verify TLS/SSL server certificates. wincertstore 0.2\n only returns certificates for *SERVER_AUTH* enhanced key usage by default.\n\n\nExample\n=======\n\n::\n\n import wincertstore\n for storename in (\"CA\", \"ROOT\"):\n with wincertstore.CertSystemStore(storename) as store:\n for cert in store.itercerts(usage=wincertstore.SERVER_AUTH):\n print(cert.get_pem().decode(\"ascii\"))\n print(cert.get_name())\n print(cert.enhanced_keyusage_names())\n\n``SERVER_AUTH`` is the default enhanced key usage. In order to get all\ncertificates for any usage, use ``None``. The module offers more OIDs like\n``CLIENT_AUTH``, too.\n\nFor Python versions without the with statement::\n\n for storename in (\"CA\", \"ROOT\"):\n store = wincertstore.CertSystemStore(storename)\n try:\n for cert in store.itercerts():\n print(cert.get_pem().decode(\"ascii\")\n finally:\n store.close()\n\nSee `CertOpenSystemStore`_\n\nCertFile helper::\n\n import wincertstore\n import atexit\n import ssl\n\n certfile = wincertstore.CertFile()\n certfile.addstore(\"CA\")\n certfile.addstore(\"ROOT\")\n atexit.register(certfile.close) # cleanup and remove files on shutdown)\n\n ssl_sock = ssl.wrap_socket(sock,\n ca_certs=certfile.name,\n cert_reqs=ssl.CERT_REQUIRED)\n\n\nRequirements\n============\n\n- Python 2.3 to 3.3\n\n- Windows XP, Windows Server 2003 or newer\n\n- ctypes 1.0.2 (Python 2.3 and 2.4)\n from http://sourceforge.net/projects/ctypes/\n\n \nLicense\n=======\n\nCopyright (c) 2013, 2014 by Christian Heimes \n\nLicensed to PSF under a Contributor Agreement.\n\nSee http://www.python.org/psf/license for licensing details.\n\n\nAcknowledgements\n================\n\nhttp://fixunix.com/openssl/254866-re-can-openssl-use-windows-certificate-store.html\n\nhttp://bugs.python.org/issue17134\n\n\nReferences\n==========\n\n.. _CertOpenSystemStore: http://msdn.microsoft.com/en-us/library/windows/desktop/aa376560%28v=vs.85%29.aspx\n\nChangeLog\n=========\n\nwincertstore 0.2\n----------------\n\n*Release date: 26-Feb-2013*\n\n- By default CertSystemStore.itercerts() is now limited to return only\n certs that are suitable for SERVER_AUTH -- that is to validate a TLS/SSL's\n server cert from the perspective of a client.\n\n- Add CERT_CONTEXT.get_name() to get a human readable name of a certificate.\n\n- Add CERT_CONTEXT.enhanced_keyusage() to get enhanced key usage and trust\n settings from registry. The method returns either ``True`` or a frozenset\n of OIDs. True means that the certificate is valid for any purpose.\n\n- CERT_CONTEXT.enhanced_keyusage_names() maps OIDs to human readable names.\n\n- Add commin OIDs for enhanced key usages like SERVER_AUTH and CLIENT_AUTH.\n\n- Add support for universal wheels.\n\n- Add tox for testing Python 2.6 to 3.3. Python 2.4 and 2.5 are tested\n manually.\n\n- Use pypi.python.org:443 for TLS tests.\n\n\nwincertstore 0.1\n----------------\n\n*Release date: 22-Mar-2013*\n\n- Initial release", "description_content_type": null, "docs_url": null, "download_url": "http://pypi.python.org/pypi/wincertstore", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/tiran/wincertstore", "keywords": "windows cert ssl ca crl", "license": "PSFL", "maintainer": null, "maintainer_email": null, "name": "wincertstore", "package_url": "https://pypi.org/project/wincertstore/", "platform": "Windows", "project_url": "https://pypi.org/project/wincertstore/", "project_urls": { "Download": "http://pypi.python.org/pypi/wincertstore", "Homepage": "https://bitbucket.org/tiran/wincertstore" }, "release_url": "https://pypi.org/project/wincertstore/0.2/", "requires_dist": null, "requires_python": null, "summary": "Python module to extract CA and CRL certs from Windows' cert store (ctypes based).", "version": "0.2" }, "last_serial": 1012722, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "2f9accbebe8f7b4c06ac7aa83879b81c", "sha256": "ea233947a5703f69e85ffdfde5c7996323cbb54455ca66250d073cc171977ad2" }, "downloads": -1, "filename": "wincertstore-0.1.zip", "has_sig": true, "md5_digest": "2f9accbebe8f7b4c06ac7aa83879b81c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8862, "upload_time": "2013-03-22T16:23:32", "url": "https://files.pythonhosted.org/packages/34/b8/aaa315a46431ea670a5371294f1b5306e2fadaacdab0d85ea4bf7fdfccba/wincertstore-0.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "03510657cf5ed292c9debe22c16edbe0", "sha256": "22d5eebb52df88a8d4014d5cf6d1b6c3a5d469e6c3b2e2854f3a003e48872356" }, "downloads": -1, "filename": "wincertstore-0.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "03510657cf5ed292c9debe22c16edbe0", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8800, "upload_time": "2014-02-26T11:42:57", "url": "https://files.pythonhosted.org/packages/d1/67/12f477fa1cc8cbcdc78027c9fb0933ad41daf2e95a29d1cc8f34fe80c692/wincertstore-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae728f2f007185648d0c7a8679b361e2", "sha256": "780bd1557c9185c15d9f4221ea7f905cb20b93f7151ca8ccaed9714dce4b327a" }, "downloads": -1, "filename": "wincertstore-0.2.zip", "has_sig": true, "md5_digest": "ae728f2f007185648d0c7a8679b361e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14996, "upload_time": "2014-02-26T11:42:17", "url": "https://files.pythonhosted.org/packages/df/e1/765f9abdd57610b1c6251e4853edddcac60f929cf6c9029200887dde0f9e/wincertstore-0.2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "03510657cf5ed292c9debe22c16edbe0", "sha256": "22d5eebb52df88a8d4014d5cf6d1b6c3a5d469e6c3b2e2854f3a003e48872356" }, "downloads": -1, "filename": "wincertstore-0.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "03510657cf5ed292c9debe22c16edbe0", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8800, "upload_time": "2014-02-26T11:42:57", "url": "https://files.pythonhosted.org/packages/d1/67/12f477fa1cc8cbcdc78027c9fb0933ad41daf2e95a29d1cc8f34fe80c692/wincertstore-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae728f2f007185648d0c7a8679b361e2", "sha256": "780bd1557c9185c15d9f4221ea7f905cb20b93f7151ca8ccaed9714dce4b327a" }, "downloads": -1, "filename": "wincertstore-0.2.zip", "has_sig": true, "md5_digest": "ae728f2f007185648d0c7a8679b361e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14996, "upload_time": "2014-02-26T11:42:17", "url": "https://files.pythonhosted.org/packages/df/e1/765f9abdd57610b1c6251e4853edddcac60f929cf6c9029200887dde0f9e/wincertstore-0.2.zip" } ] }