{ "info": { "author": "Josh Blum", "author_email": "jblum18@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Framework :: Django :: 2.2", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "# django-keybase-proofs\n\n[![PyPI version](https://badge.fury.io/py/django-keybase-proofs.svg?maxAge=2592000)](https://badge.fury.io/py/django-keybase-proofs)\n[![PyPI](https://img.shields.io/pypi/pyversions/django-keybase-proofs.svg)](https://pypi.python.org/pypi/django-keybase-proofs)\n[![Travis CI](https://travis-ci.org/keybase/django-keybase-proofs.svg?branch=master)](https://travis-ci.org/keybase/django-keybase-proofs)\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\n`django-keybase-proofs` is a Django application and reference implementation\nfor integrating Keybase proofs into a web app. If you are looking to integrate\nKeybase proofs into your application and you use Django, you can use this as a\ndrop-in library. Otherwise, you can [run the server\nlocally](##exploring-the-example-service) or checkout the code to see how to\nbuild your own integration. You can read the [full integration\ndocumentation](https://keybase.io/docs/proof_integration_guide) for all of the\nrequired steps to integrate with Keybase.\n\nThe library supports Django 1.11 to Django 2.2 across Python versions 2.7 to\n3.7. If you would like to see a feature or find a bug, please let us know by\nopening an [issue](https://github.com/keybase/keybase-proofs/issues) or [pull\nrequest](https://github.com/keybase/keybase-proofs/pulls).\n\n## Integrate with an existing django application\n\nTo install:\n\n```\npip install django-keybase-proofs\n```\n\nAdd `keybase_proofs` to settings.py's `INSTALLED_APPS` and set the\n`KEYBASE_PROOFS_DOMAIN` settings:\n\n```python\nINSTALLED_APPS = (\n # ...other installed applications...\n 'keybase_proofs',\n)\n# Must match the `domain` set in the config.\nKEYBASE_PROOFS_DOMAIN = \n```\n\nAdd `url(r'^keybase_proofs/', include('keybase_proofs.urls')),` to your main\n`urls.py`\n\nYou can copy the example templates in `keybase_proofs/templates/` to customize\nand style as necessary. Checkout the [remaining\nsteps](https://keybase.io/docs/proof_integration_guide#4-steps-to-rollout) to\nintegrate and submit your configuration to Keybase.\n\nNOTE: In the integration guide [periodic\nchecking](https://keybase.io/docs/proof_integration_guide#3-linking-user-profiles)\nof the proof's liveness is discussed. This library does not implement the this\nbehavior since there is not an generic way to express this for Django\napplications. We provide a library function\n(`keybase_proofs.views.verify_proof`) to implement this functionality if\ndesired. The job scheduling/retry behavior is left up to the implementation.\n\n\n## Exploring the example service\n\nIf you are building a Keybase proof integration but don't use Django, you can\nstill use this package as an reference implementation. Using the instructions\nbelow you can run the server locally to see expected behavior/responses you\nshould implement.\n\nFirst install the required python packages with:\n\n```\n# install basic python requirements, a virtualenv is recommended.\nmake installdeps\n# Run the example `test_app` server\nmake run\n```\n\nWhen running the test server you can play around with posting proofs/reading\nthe API. The test server does not have any authentication mechanism. Any\nusername you submit on the login form will be authenticated and can post a\nproof.\n\n\n## Example config\n\nHere is an example configuration if you were to use this library. You should\ncheck out [the\ndocumentation](https://keybase.io/docs/proof_integration_guide#1-config) for\nthe complete description of what's going on here.\n\n```json\n{\n \"version\": 1,\n \"domain\": \"\",\n \"display_name\": \"Django Keybase Proofs\",\n \"username\": {\n \"re\": \"^[a-zA-Z0-9_]{2,20}$\",\n \"min\": 2,\n \"max\": 20\n },\n \"brand_color\": \"#000100\",\n \"logo\": null,\n \"description\": \"Next gen social network using big data & AI in the cloud \ud83e\udd16\u2601\ufe0f.\",\n \"prefill_url\": \"https:///keybase-proofs/new-proof?kb_username=%{kb_username}&username=%{username}&sig_hash=%{sig_hash}&kb_ua=%{kb_ua}\",\n \"profile_url\": \"https:///keybase-proofs/profile/%{username}\",\n \"check_url\": \"https:///keybase-proofs/api/%{username}\",\n \"check_path\": [\"keybase_sigs\"],\n \"contact\": [\"admin@\", \"joshblum@keybase\"]\n}\n```\n\n## Verifying the integration\n\nWhile integrating you can use the [verification\nscript](https://keybase.io/docs/proof_integration_guide/verification_script) to\nhelp manually verify the correctness your integration.\n\n## Development tips\n\nYou can run tests by running:\n```\n make test\n```\n\nTo release to pypi:\n```\nTAG_NAME=\"XXX\"\nmake release TAG_NAME=$TAG_NAME\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/keybase/django-keybase-proofs", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-keybase-proofs", "package_url": "https://pypi.org/project/django-keybase-proofs/", "platform": "", "project_url": "https://pypi.org/project/django-keybase-proofs/", "project_urls": { "Homepage": "https://github.com/keybase/django-keybase-proofs" }, "release_url": "https://pypi.org/project/django-keybase-proofs/0.0.8/", "requires_dist": [ "py2casefold (<1.1,>=1.0.1)", "requests (<2.30.0,>=2.20.0)", "django-jsonview (<1.3.0,>=1.2.0)" ], "requires_python": "", "summary": "Support for keybase proofs in Django", "version": "0.0.8" }, "last_serial": 5195436, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "b50b8c2a859f702dc027b02c6a2b3d66", "sha256": "63ec226048c6f7886e0f590c5c553f7e10fc017eddfc5a70f527003c3724bfcf" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b50b8c2a859f702dc027b02c6a2b3d66", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12567, "upload_time": "2018-10-19T21:44:21", "url": "https://files.pythonhosted.org/packages/62/1a/824d3bd403de089c94d29600c56f559d78bbf8b8171e9d90e1c66c2cadff/django_keybase_proofs-0.0.1-py2.py3-none-any.whl" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "90b9048ee2a08c47e09fc2f76a2a7f33", "sha256": "da580628d454c793cc02ef69a858b3c3b9212be6bd511018b7c898c9435eda3f" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "90b9048ee2a08c47e09fc2f76a2a7f33", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12621, "upload_time": "2018-10-22T19:07:03", "url": "https://files.pythonhosted.org/packages/c6/bb/b3805358bce00bdc784b32c053ed7f424a08f313598acea535e97362205f/django_keybase_proofs-0.0.2-py2.py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "d69f2862366e37bc3ef38b6dc8042e33", "sha256": "cdf3d29efab8555396c5ba4ed1e7e08eb3af2279dcc10455ebb79194a82832de" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d69f2862366e37bc3ef38b6dc8042e33", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13296, "upload_time": "2018-10-23T14:18:17", "url": "https://files.pythonhosted.org/packages/32/2e/885a2d1cde15dcf1e9e581c1605f240fe9283ceaa1ec84d2b152a6543c74/django_keybase_proofs-0.0.3-py2.py3-none-any.whl" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "b7a7ebb10323fb6c594d3c821407884e", "sha256": "753cd208c39df6c61a5dbf8e88a1f21361f0f27cf1a866cfa67f3de7b369b88b" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b7a7ebb10323fb6c594d3c821407884e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14390, "upload_time": "2018-10-31T17:07:57", "url": "https://files.pythonhosted.org/packages/c3/ce/0063dbedb047e4121e3d1f39b652d6fb9e5017dfaf5ab318d9a117df4c9d/django_keybase_proofs-0.0.4-py2.py3-none-any.whl" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "b23a66b6d9e99e3529e6ea836aa3569e", "sha256": "57fcb4c43c18355f13b9eba5536f89f7dac1ce39229f590d5dc4f434a9d1fb80" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b23a66b6d9e99e3529e6ea836aa3569e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14390, "upload_time": "2018-11-21T15:59:57", "url": "https://files.pythonhosted.org/packages/a5/c7/e602b555a24a7e10b451927af7698a14a8b05d136b19fbfd9b28f58f684c/django_keybase_proofs-0.0.5-py2.py3-none-any.whl" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "867156f6cc35091eb67550de6bf0035e", "sha256": "79f1ecd2b8e30033812e42a16924cdc1c7429a5e8359cd66af30011993b323a9" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "867156f6cc35091eb67550de6bf0035e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14724, "upload_time": "2018-12-19T20:06:15", "url": "https://files.pythonhosted.org/packages/ca/31/c9c0188c37d67b93fea7fab3ca07519e784a034fb067655d43e5a7265558/django_keybase_proofs-0.0.6-py2.py3-none-any.whl" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "2cab25c171e65dda57d780dff1f45f47", "sha256": "968ad91b092c861e6366fb807294cbcdee31fb88e0ae55512baee0b80466c177" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2cab25c171e65dda57d780dff1f45f47", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15378, "upload_time": "2019-04-26T18:31:36", "url": "https://files.pythonhosted.org/packages/5a/08/fd275b695d01e097dbf416004823fc3ce8beb9db2d4370069be0f46e7b10/django_keybase_proofs-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c50995a35a1cb541859e2b2b0a98f97", "sha256": "c0ada35aa839fa2dc683734ab8e896fe1da78b055bc8beeb22886a0e58f80ee7" }, "downloads": -1, "filename": "django-keybase-proofs-0.0.7.tar.gz", "has_sig": false, "md5_digest": "5c50995a35a1cb541859e2b2b0a98f97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11445, "upload_time": "2019-04-26T18:31:40", "url": "https://files.pythonhosted.org/packages/9c/11/ec736012f1acdfbde90dde66bb70b8f8f50095ce03d5b22cbba195e335fd/django-keybase-proofs-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "7a2c30fc2d10d54df507a19da28c5833", "sha256": "5c79b6ae3281549a44cc2e44c2eac05b99f76039bf48895c789fd2a454e85112" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a2c30fc2d10d54df507a19da28c5833", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15357, "upload_time": "2019-04-27T00:44:06", "url": "https://files.pythonhosted.org/packages/fb/b8/c08bdf53bad1cd1eabd0acedde1474df535b5bc083326d96ade09fbab739/django_keybase_proofs-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba9cf8e44359cf2929f51db50bf15191", "sha256": "380fc066c526fac2da9f7be83a7ad20d0fc53057d2bb80d2a1c7680481eb8814" }, "downloads": -1, "filename": "django-keybase-proofs-0.0.8.tar.gz", "has_sig": false, "md5_digest": "ba9cf8e44359cf2929f51db50bf15191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11435, "upload_time": "2019-04-27T00:44:08", "url": "https://files.pythonhosted.org/packages/ef/28/eaa1cfa94741be9ab69542ca7e4aca680c7fea704aa3e4e24dfd3078ce9e/django-keybase-proofs-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7a2c30fc2d10d54df507a19da28c5833", "sha256": "5c79b6ae3281549a44cc2e44c2eac05b99f76039bf48895c789fd2a454e85112" }, "downloads": -1, "filename": "django_keybase_proofs-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a2c30fc2d10d54df507a19da28c5833", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15357, "upload_time": "2019-04-27T00:44:06", "url": "https://files.pythonhosted.org/packages/fb/b8/c08bdf53bad1cd1eabd0acedde1474df535b5bc083326d96ade09fbab739/django_keybase_proofs-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba9cf8e44359cf2929f51db50bf15191", "sha256": "380fc066c526fac2da9f7be83a7ad20d0fc53057d2bb80d2a1c7680481eb8814" }, "downloads": -1, "filename": "django-keybase-proofs-0.0.8.tar.gz", "has_sig": false, "md5_digest": "ba9cf8e44359cf2929f51db50bf15191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11435, "upload_time": "2019-04-27T00:44:08", "url": "https://files.pythonhosted.org/packages/ef/28/eaa1cfa94741be9ab69542ca7e4aca680c7fea704aa3e4e24dfd3078ce9e/django-keybase-proofs-0.0.8.tar.gz" } ] }