{ "info": { "author": "Mozilla Identity Team", "author_email": "dev-identity@lists.mozilla.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "========================================================\nPyBrowserID: a python library for the BrowserID Protocol\n========================================================\n\nThis is a python client library for the BrowserID protocol that underlies\nMozilla Persona:\n\n https://login.persona.org/\n\nFor the vast majority of deployments, you will simply want to call the module-\nlevel \"verify\" functon to verify a given assertion::\n\n >>> data = browserid.verify(BROWSERIDASSERTION, \"http://mysite.com\")\n >>> print data[\"email\"]\n \"test@example.com\"\n\nThe precise implementation of this function will change depending on the\ncurrent recommendations of the BrowserID team. Currently it POSTs the\nassertion to the remote verifier service on persona.org.\n\nNote that you *must* specify your site's root URL as the second argument\nto that function. This is the \"expected audience\" and is a key security\nfeature of BrowserID.\n\nIf you are not able to determine the precise hostname by which your site\nis being accessed (e.g. due to virtual hosting) then you may specify one or\nmore wildcard patterns like so::\n\n >>> data = browserid.verify(BROWSERIDASSERTION, [\"http://*.mysite.com\"])\n >>> print data[\"email\"]\n \"test@example.com\"\n\nFor finer control over the verification process, you can create an instance of\na \"Verifier\" class and avoid having to specify the audience patterns over\nand over again::\n\n >>> verifier = browserid.RemoteVerifier([\"*.mysite.com\"])\n >>> data = verifier.verify(BROWSERIDASSERTION)\n >>> print data[\"email\"]\n \"test@example.com\"\n\nFor improved performance, or if you just want to live on the bleeding edge,\nyou can explicitly perform verification locally by using the LocalVerifier\nclass like so::\n\n >>> verifier = browserid.LocalVerifier([\"*.mysite.com\"])\n >>> data = verifier.verify(BROWSERIDASSERTION)\n >>> print data[\"email\"]\n \"test@example.com\"\n\nNote that the details of the BrowserID Protocol are still in flux, so\nlocal verification might break due to incompatible changes. As things \nstabilise this will become the default implementation.\n\n\n0.14.0 - 2018-01-12\n===================\n\n * Silence warnings about assertion format changes,\n since there's now no risk of this.\n\n0.13.0 - 2017-12-20\n===================\n\n * Use LocalVerifier by default, now that the hosted\n verifier has shut down.\n\n0.12.0 - 2017-05-29\n===================\n\n * Add support for extra \"idpClaims\" and \"userClaims\"\n when using the LocalVerifier class.\n\n0.11.0 - 2016-05-11\n===================\n\n * Have the local verifier validate that the email\n address is well-formed, to avoid passing e.g.\n null bytes through to code that doesn't properly\n handle them.\n\n0.10.0 - 2016-03-09\n===================\n\n * Add support for \"idpClaims\" and \"userClaims\" when\n generating test assertions. This helps when using\n this library to interact with Firefox Accounts.\n\n0.9.2 - 2014-04-13\n==================\n\n * Remove tuple paramter unpacking for python3.\n * Add \"description\" attribute to Error objects.\n\n0.9.1 - 2012-11-26\n==================\n\n * Fix data-decoding bug in fallback crypto routines.\n\n0.9.0 - 2012-10-04\n==================\n\n * Support for Python 3.\n\n0.8.0 - 2012-08-01\n==================\n\n * Correct the pure-python RSA implementation. Unfortunately this\n requires a small backwards-incompatible API change on RSKey objects\n (the SIZE property is now DIGESTSIZE and it gives the size of the\n internal hex digest string in bytes)\n\n0.7.0 - 2012-07-26\n==================\n\n * Added a pure-python implementation of the JWT crypto routines, for\n use when M2Crypto is not available.\n * Added \"from_pem_data\" and \"to_pem_data\" methods to Key objects.\n Currently these are only available when M2Crypto is installed.\n * Added support for delegation of authority; thanks @kylef.\n * Use https://verifier.login.persona.org/verify for remote verification\n\n0.6.2 - 2012-07-17\n==================\n\n * Add persona.org and related sites to the list of default\n trusted secondaries.\n\n0.6.1 - 2012-06-07\n==================\n\n * Disable certificate chaining for now. This feature is not used by any\n servers in the wild, and the spec for it is going to change soon.\n\n0.6.0 - 2012-31-05\n==================\n\n * Remove ability to use a custom JWT parser class, it's not used and\n adds needless complexity.\n * Add a way to skip the ssl verification when getting certificates with the\n CertificateManager.\n\n0.5.0 - 2012-04-18\n==================\n\n * add support of requests rather than custom code for ssl checking when\n retrieving certificates.\n * removed patch utility for secure_urlopen (we are now using requests)\n * add more verbose errors when dealing with RSA/DSA Keys.\n\n0.4.0 - 2012-03-13\n==================\n\n * Renamed from PyVEP to PyBrowserID, in keeping with Mozilla branding.\n * Audience checking now accepts glob-style patterns as well as fixed\n audience strings.\n * Verifier objects now accept a list of audience patterns as their first\n argument. This is designed to encourage doing the right thing rather than,\n say, passing in the hostname from the request.\n * Allowed LocalVerifier to use of a custom JWT parser.\n * Removed browserid.verify_[remote|local|dummy] since they just cause\n confusion. You should either accept the defaults provided by the\n browserid.verify function, or use a full-blown Verifier object.\n * Split certificate loading and caching into a separate class, in\n browserid.certificates:CertificatesManager.\n * Removed the DummyVerifier class in favour of supporting functions\n in browserid.tests.support.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mozilla/PyBrowserID", "keywords": "authentication browserid login email", "license": "MPLv2.0", "maintainer": "", "maintainer_email": "", "name": "PyBrowserID", "package_url": "https://pypi.org/project/PyBrowserID/", "platform": "", "project_url": "https://pypi.org/project/PyBrowserID/", "project_urls": { "Homepage": "https://github.com/mozilla/PyBrowserID" }, "release_url": "https://pypi.org/project/PyBrowserID/0.14.0/", "requires_dist": [ "requests" ], "requires_python": "", "summary": "Python library for the BrowserID Protocol", "version": "0.14.0" }, "last_serial": 3482168, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "61e546fde211aba8c6222a10add623ac", "sha256": "e540cfe54c2c3cfb8cc7e5c33fe19d9e7c2ad267063afe1f699a8e1b03d940d7" }, "downloads": -1, "filename": "PyBrowserID-0.10.0.tar.gz", "has_sig": false, "md5_digest": "61e546fde211aba8c6222a10add623ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35335, "upload_time": "2016-03-09T11:50:53", "url": "https://files.pythonhosted.org/packages/a7/aa/8df9e55fea89701f593a0761be985e91d6e306995811ea716ca96d8a5425/PyBrowserID-0.10.0.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "881db380326010ed41f6a529591b5095", "sha256": "bf72f57eaa4d2ea36c6888e868f49e588c7b9c0b78dfbf2bc79fee93e97f39d2" }, "downloads": -1, "filename": "PyBrowserID-0.11.0.tar.gz", "has_sig": false, "md5_digest": "881db380326010ed41f6a529591b5095", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35732, "upload_time": "2016-05-11T11:30:12", "url": "https://files.pythonhosted.org/packages/d7/fd/729ef9ff743bc1758f24c5dbbe4c650f892bd4b04e60cec26b1f73b2f100/PyBrowserID-0.11.0.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "15c2949ef001b7e3bcffec3cb1d42c87", "sha256": "40cfec78212d79af67ca8744c563dc029d30196585e4848b03e01bbbd36cf53e" }, "downloads": -1, "filename": "PyBrowserID-0.12.0.tar.gz", "has_sig": false, "md5_digest": "15c2949ef001b7e3bcffec3cb1d42c87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36541, "upload_time": "2017-05-29T02:41:51", "url": "https://files.pythonhosted.org/packages/6f/bf/a6a4518bc19c8ace94ff4257ac1081a791d13bfcf4097c2805c62fd65bb5/PyBrowserID-0.12.0.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "116c0710b1d6b7cc6056830a0d0006de", "sha256": "669a387e8135c48438638ef17eaacdd33a145c8cc8c2b0d9496aadcc1de206a6" }, "downloads": -1, "filename": "PyBrowserID-0.13.0.tar.gz", "has_sig": false, "md5_digest": "116c0710b1d6b7cc6056830a0d0006de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36629, "upload_time": "2017-12-20T03:21:20", "url": "https://files.pythonhosted.org/packages/38/59/d4d4cc27174bb02ea28eea3632f3b430a892cb064eb209c213dd1bf53b4c/PyBrowserID-0.13.0.tar.gz" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "2c14acee5d7ca6a230605bfbf6d62c4b", "sha256": "8e237d6a2bc9ead849a4472a84d3e6a9309bec99cf8e10d36213710dda8df8ca" }, "downloads": -1, "filename": "PyBrowserID-0.14.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2c14acee5d7ca6a230605bfbf6d62c4b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 49753, "upload_time": "2018-01-11T21:32:32", "url": "https://files.pythonhosted.org/packages/05/84/c05bc305cfa581f958e191aa635ef0d1fd750072b68ef103e5b7170ecdf6/PyBrowserID-0.14.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fdfd2b65fbd3939332b90b6d2089ce59", "sha256": "6c227669e87cc25796ae76f6a0ef65025528c8ad82d352679fa9a3e5663a71e3" }, "downloads": -1, "filename": "PyBrowserID-0.14.0.tar.gz", "has_sig": false, "md5_digest": "fdfd2b65fbd3939332b90b6d2089ce59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36566, "upload_time": "2018-01-11T21:32:34", "url": "https://files.pythonhosted.org/packages/e4/2e/e9bb9e24e600da08ff6a4d003362434eed717151f58413d8f73427e7e315/PyBrowserID-0.14.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "8021fe357d48b427e0e15d7d496210de", "sha256": "d44e79830ad4201a749b51e68210926c46bea5f9edcf343019fd6540987b3064" }, "downloads": -1, "filename": "PyBrowserID-0.4.0.tar.gz", "has_sig": false, "md5_digest": "8021fe357d48b427e0e15d7d496210de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33029, "upload_time": "2012-03-14T07:07:14", "url": "https://files.pythonhosted.org/packages/99/71/b89efe8d9e2f3168a62219a375bd5bd9a481f5bed11b5e60e70ed018ef7a/PyBrowserID-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "16b8f54e8fab3249297a01d83b5bb6ba", "sha256": "c568042ec777443953c2d0dee5487704c9cf1646e74e2f6ba685a432a533e77c" }, "downloads": -1, "filename": "PyBrowserID-0.5.0.tar.gz", "has_sig": false, "md5_digest": "16b8f54e8fab3249297a01d83b5bb6ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31953, "upload_time": "2012-04-19T00:30:43", "url": "https://files.pythonhosted.org/packages/ff/a6/1bdf2548307bde1e5b71ed2cc54b3a8eeed511539e4031d238903dba2edf/PyBrowserID-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "96749b0db01bb9d68d24e74e572b3ff5", "sha256": "48f7e30322fc5cbc1b28d2d64a9257ac644004946a64a54dd666bf36fb3a788c" }, "downloads": -1, "filename": "PyBrowserID-0.6.0.tar.gz", "has_sig": false, "md5_digest": "96749b0db01bb9d68d24e74e572b3ff5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30046, "upload_time": "2012-05-31T17:03:43", "url": "https://files.pythonhosted.org/packages/2d/79/486a0296b298c348d22af6b77844c101271d1d055dd92063a5f8468df17d/PyBrowserID-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "0ba63e3ff7aee932cf9cdb065d993fb6", "sha256": "855ead7f1606912205dc7d7c2db6e062a4a984c48844035297163efade266168" }, "downloads": -1, "filename": "PyBrowserID-0.6.1.tar.gz", "has_sig": false, "md5_digest": "0ba63e3ff7aee932cf9cdb065d993fb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30303, "upload_time": "2012-07-06T04:10:24", "url": "https://files.pythonhosted.org/packages/9a/8e/8fcb43492bbb950371c553717304143a38142121e645f30f59e4f5a6ed66/PyBrowserID-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "25f9517576c9529e1b3e550f343fe71f", "sha256": "a5a1dae36303b2247be833c7f22b8007431a23d781262f0e56d56b577e91b9ea" }, "downloads": -1, "filename": "PyBrowserID-0.6.2.tar.gz", "has_sig": false, "md5_digest": "25f9517576c9529e1b3e550f343fe71f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30407, "upload_time": "2012-07-17T01:07:15", "url": "https://files.pythonhosted.org/packages/21/c3/1b9635e100e1061952110d24cb8cfc227b23b0247f96bb9c6c337812b681/PyBrowserID-0.6.2.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "a19eadc80c6038924c286d38b2e4f03e", "sha256": "7eb939fe459708f2e523cbf92426a982f49be020ea8a1c8b67808d84a46a70ce" }, "downloads": -1, "filename": "PyBrowserID-0.7.0.tar.gz", "has_sig": false, "md5_digest": "a19eadc80c6038924c286d38b2e4f03e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34055, "upload_time": "2012-07-26T14:53:33", "url": "https://files.pythonhosted.org/packages/1d/a4/61a9ab700bafcc72fa103c9ab1d4b6f1aa23fa47bcf04200a7b9e3002002/PyBrowserID-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "e5a371fc3e384d81437f474fe9503998", "sha256": "807a545023a3b08b0b1e372643ba877859595984ce45b6aab8c17a52861bd7f6" }, "downloads": -1, "filename": "PyBrowserID-0.8.0.tar.gz", "has_sig": false, "md5_digest": "e5a371fc3e384d81437f474fe9503998", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34702, "upload_time": "2012-08-01T02:04:54", "url": "https://files.pythonhosted.org/packages/2a/85/fe34afe364cabbe5004ea95216416845f89bf81b7c988ac53f208cbb8304/PyBrowserID-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "a01024d3c0d66207a62cb5d7a98be6c4", "sha256": "c1f30a4060defdbbb163e42c1baf392c6725cf9b8bbf7a99a6503b5e6ef8cf94" }, "downloads": -1, "filename": "PyBrowserID-0.9.0.tar.gz", "has_sig": false, "md5_digest": "a01024d3c0d66207a62cb5d7a98be6c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37268, "upload_time": "2012-10-04T07:20:56", "url": "https://files.pythonhosted.org/packages/ea/35/727bacd7b6648ae276bb06826538ac875f07d2993b3d9cb6eb365e3ba82b/PyBrowserID-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "af94bbbaa6a9a023ffcbda7e81aa2184", "sha256": "843e9bd8eec9d958e95c1d53acebb6368b002b98211ee20837cdf71e439cca05" }, "downloads": -1, "filename": "PyBrowserID-0.9.1.tar.gz", "has_sig": false, "md5_digest": "af94bbbaa6a9a023ffcbda7e81aa2184", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37460, "upload_time": "2012-11-26T00:58:19", "url": "https://files.pythonhosted.org/packages/c2/44/5f02667d0f93d04cadcbf59f32d34ea3d4271301614d34d62a0806c06347/PyBrowserID-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "3b6202ba67a46ff690ac7e8e0033fbc2", "sha256": "05b8a9531377ccb1df66e8e30a9dd2c9611bee6189b51452610e7e80df74a395" }, "downloads": -1, "filename": "PyBrowserID-0.9.2.tar.gz", "has_sig": false, "md5_digest": "3b6202ba67a46ff690ac7e8e0033fbc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37965, "upload_time": "2014-04-12T21:21:54", "url": "https://files.pythonhosted.org/packages/9e/ce/db7fc65b4eaeb1c60de431463dd3ec1bb6152ebf244ef93b78336ef45c97/PyBrowserID-0.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2c14acee5d7ca6a230605bfbf6d62c4b", "sha256": "8e237d6a2bc9ead849a4472a84d3e6a9309bec99cf8e10d36213710dda8df8ca" }, "downloads": -1, "filename": "PyBrowserID-0.14.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2c14acee5d7ca6a230605bfbf6d62c4b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 49753, "upload_time": "2018-01-11T21:32:32", "url": "https://files.pythonhosted.org/packages/05/84/c05bc305cfa581f958e191aa635ef0d1fd750072b68ef103e5b7170ecdf6/PyBrowserID-0.14.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fdfd2b65fbd3939332b90b6d2089ce59", "sha256": "6c227669e87cc25796ae76f6a0ef65025528c8ad82d352679fa9a3e5663a71e3" }, "downloads": -1, "filename": "PyBrowserID-0.14.0.tar.gz", "has_sig": false, "md5_digest": "fdfd2b65fbd3939332b90b6d2089ce59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36566, "upload_time": "2018-01-11T21:32:34", "url": "https://files.pythonhosted.org/packages/e4/2e/e9bb9e24e600da08ff6a4d003362434eed717151f58413d8f73427e7e315/PyBrowserID-0.14.0.tar.gz" } ] }