{ "info": { "author": "Craig Weber", "author_email": "crgwbr@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: MacOS :: MacOS X", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "Asymmetric JWT Authentication\n=============================\n\n.. image:: https://img.shields.io/pypi/v/asymmetric_jwt_auth.svg\n :target: https://pypi.python.org/pypi/asymmetric_jwt_auth\n\n.. image:: https://travis-ci.org/crgwbr/asymmetric-jwt-auth.svg\n :target: https://travis-ci.org/crgwbr/asymmetric-jwt-auth\n\n\nWhat?\n-----\n\nThis is an library designed to handle authentication in\n*server-to-server* API requests. It accomplishes this using RSA public /\nprivate key pairs.\n\n\nWhy?\n----\n\nThe standard pattern of using username and password works well for\nuser-to-server requests, but is lacking for server-to-server\napplications. In these scenarios, since the password doesn\u2019t need to be\nmemorable by a user, we can use something far more secure: asymmetric\nkey cryptography. This has the advantage that a password is never\nactually sent to the server.\n\n\nHow?\n----\n\nA public / private key pair is generated by the client machine. The\nserver machine is then supplied with the public key, which it can store\nin any method it likes. When this library is used with Django, it\nprovides a model for storing public keys associated with built-in User\nobjects. When a request is made, the client creates a JWT including\nseveral claims and signs it using it\u2019s private key. Upon receipt, the\nserver verifies the claim to using the public key to ensure the issuer\nis legitimately who they claim to be.\n\nThe claim (issued by the client) includes components: the username of\nthe user who is attempting authentication, the current unix timestamp,\nand a randomly generated nonce. For example:\n\n::\n\n {\n \"username\": \"guido\",\n \"time\": 1439216312,\n \"nonce\": \"1\"\n }\n\nThe timestamp must be within \u00b120 seconds of the server time and the\nnonce must be unique within the given timestamp and user. In other\nwords, if more than one request from a user is made within the same\nsecond, the nonce must change. Due to these two factors no token is\nusable more than once, thereby preventing replay attacks.\n\nTo make an authenticated request, the client must generate a JWT\nfollowing the above format and include it as the HTTP Authorization\nheader in the following format:\n\n::\n\n Authorization: JWT \n\n**Important note**: the claim is *not* encrypted, only signed.\nAdditionally, the signature only prevents the claim from being tampered\nwith or re-used. Every other part of the request is still vulnerable to\ntamper. Therefore, this is not a replacement for using SSL in the\ntransport layer.\n\n**Full Documentation**: https://asymmetric-jwt-auth.readthedocs.io\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/crgwbr/asymmetric-jwt-auth", "keywords": "", "license": "ISC", "maintainer": "", "maintainer_email": "", "name": "asymmetric_jwt_auth", "package_url": "https://pypi.org/project/asymmetric_jwt_auth/", "platform": "", "project_url": "https://pypi.org/project/asymmetric_jwt_auth/", "project_urls": { "Homepage": "https://github.com/crgwbr/asymmetric-jwt-auth" }, "release_url": "https://pypi.org/project/asymmetric_jwt_auth/0.4.3/", "requires_dist": null, "requires_python": "", "summary": "Asymmetric key based authentication for HTTP APIs", "version": "0.4.3" }, "last_serial": 3800336, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "61c2aa20e2aad5e0c05355cf52aadfde", "sha256": "df425b657ce8aa15534db178b6c6ea37e18805dd278f0f0454e34e72fe15f36e" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.0.tar.gz", "has_sig": false, "md5_digest": "61c2aa20e2aad5e0c05355cf52aadfde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5083, "upload_time": "2015-08-18T18:40:33", "url": "https://files.pythonhosted.org/packages/0f/e0/c0a93526c612a871301ca9b3d51d7e47dc185db2d4c70f40ee42b268d28c/asymmetric_jwt_auth-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b59f726ea58a42cea5d332cecd14d8dd", "sha256": "9e687f16a5806f84aee9f2ac5290546d881b0cb54cb48c1d2b710746627c96fd" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b59f726ea58a42cea5d332cecd14d8dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5916, "upload_time": "2015-08-18T18:46:41", "url": "https://files.pythonhosted.org/packages/df/00/b9e10e1bb4a9610bb977b6c2c63c9762b7c73f58c1a40c0c88f8c974d86e/asymmetric_jwt_auth-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "bdf4ee89a816589f1fce13b4dcf58035", "sha256": "0b010d6ef781a38bc6514e16d894fe417c0ab8f2fcfca2451d763b8bfdcd12bf" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.2.tar.gz", "has_sig": false, "md5_digest": "bdf4ee89a816589f1fce13b4dcf58035", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5909, "upload_time": "2015-08-19T19:11:41", "url": "https://files.pythonhosted.org/packages/31/c9/91a9c88e62c8a62712721cdb79dcb4adab10f7316637d7fcf8fb75f5b808/asymmetric_jwt_auth-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e46e23620ab39838a2bea071a3eee064", "sha256": "1c1757ef533c6b1469aeb53581866ef760fda6c945a7fe42866a3c9cbf49bbb7" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e46e23620ab39838a2bea071a3eee064", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6721, "upload_time": "2015-08-21T19:39:38", "url": "https://files.pythonhosted.org/packages/28/aa/cd111df670b52aceeab8f09f347d4eecde1c17adf0d2ffc076ec1442da9c/asymmetric_jwt_auth-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f9c71d132dca2811e6a48ba09f04bdba", "sha256": "196b89a7ba5e024dd02d6851bdd70ab1a539367050fd36fd2b209eba2ecfb7f5" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.4.tar.gz", "has_sig": false, "md5_digest": "f9c71d132dca2811e6a48ba09f04bdba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6700, "upload_time": "2015-08-24T14:40:55", "url": "https://files.pythonhosted.org/packages/79/79/6011421c04f58eac409d57e556ba1f62334fc7705c5d524ef3b13ef2e464/asymmetric_jwt_auth-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "1d5529c6289c8c153e9393f95d79e4a1", "sha256": "eb892f9f2b9e28318749033652e901b38ea2026df81aa0b1a94b57beee25c809" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.5.tar.gz", "has_sig": false, "md5_digest": "1d5529c6289c8c153e9393f95d79e4a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6699, "upload_time": "2015-08-24T16:49:51", "url": "https://files.pythonhosted.org/packages/69/93/334035af9702dacf18e03e59941af1057165990f220526e7bc0cd4cb4ae8/asymmetric_jwt_auth-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "f0c6dd0b32a794968543b3193fa520ee", "sha256": "11eb248442649e402ceeabfcec25a376a9a5a916c48cabbebcfc0ce2b990dbcd" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.6.tar.gz", "has_sig": false, "md5_digest": "f0c6dd0b32a794968543b3193fa520ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6997, "upload_time": "2015-08-24T18:24:46", "url": "https://files.pythonhosted.org/packages/4e/b9/847b939205ae44d7c1e67043d608fca3811a51b5043d39314b65fc0764dd/asymmetric_jwt_auth-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "54b7652e0d8ecd9a7af727cc4ea9cd20", "sha256": "6f04815871df677f1abb876970fe1dbf89db4bf003e0f66b0771d9c41cabd5da" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.1.7.tar.gz", "has_sig": false, "md5_digest": "54b7652e0d8ecd9a7af727cc4ea9cd20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6989, "upload_time": "2015-08-25T21:01:31", "url": "https://files.pythonhosted.org/packages/d0/b2/f9cf5b61b4149dafabe4e8fcb267075c3f52a5c5142c208bca03012d9e77/asymmetric_jwt_auth-0.1.7.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "50072ec4d668d6b44434f9931fcaebc6", "sha256": "2541bdc8485643e7204dd0733c09192fe5171968ec6e60020b133ee6620e131c" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.2.0.tar.gz", "has_sig": false, "md5_digest": "50072ec4d668d6b44434f9931fcaebc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7678, "upload_time": "2015-11-12T16:24:45", "url": "https://files.pythonhosted.org/packages/ad/ad/fc5dded9c28721dd1be9c816e69955eb800cd30c980cf6d61749ce1d5d17/asymmetric_jwt_auth-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "5c52d7cd20c002faba64a1ba281482e3", "sha256": "54f3d82b34ecee3bcc8ad21b85144ec5a25cf449e7f34fa1ffea2f8442ed23dd" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5c52d7cd20c002faba64a1ba281482e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7730, "upload_time": "2015-11-12T17:10:16", "url": "https://files.pythonhosted.org/packages/85/8f/e3c7a9eb891294f516a5dfa88791d41fcc4325291216e1317d40843a3383/asymmetric_jwt_auth-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "4377b668cf5aeec965cfd72df44f2e41", "sha256": "61d87ee55bb01cbc94a64c6a5326726e421b69f917344b93d2645e423a875e89" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4377b668cf5aeec965cfd72df44f2e41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7799, "upload_time": "2016-02-12T21:25:35", "url": "https://files.pythonhosted.org/packages/37/d2/5a694e0cc21eee6522ed23f49d80f63a9be847b37075fd3a9bd2f4f5f861/asymmetric_jwt_auth-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "6e2829319d4fb676775e1ff2df37abbc", "sha256": "75cfed2d59f475b3b2b41dbafc53edb2398ac90875b11247374018761982c0b3" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.2.3.tar.gz", "has_sig": true, "md5_digest": "6e2829319d4fb676775e1ff2df37abbc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7750, "upload_time": "2016-12-20T15:25:05", "url": "https://files.pythonhosted.org/packages/ea/c7/2f24de596ec4467d2aaeef6ee28e348221e16c699e42d3692ae4b2a43e35/asymmetric_jwt_auth-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "1a232f3d039582ac27a0ed41bad29f7f", "sha256": "dce93be9854df7e058e0fd6065a7f606d23b92e4df5996395346e4646a6073e0" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.2.4-py3-none-any.whl", "has_sig": true, "md5_digest": "1a232f3d039582ac27a0ed41bad29f7f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14638, "upload_time": "2016-12-20T15:27:54", "url": "https://files.pythonhosted.org/packages/d2/e9/2e5202f1aaf962de202e96a9f1ebf5a6c5d77dbd2a8bcb939e79bfba538d/asymmetric_jwt_auth-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d664ec240a9a6d324ed9ea572f3749ad", "sha256": "b682818ddd65615dddab1fdf794875fb351261098ad111856345dbf735666927" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.2.4.tar.gz", "has_sig": true, "md5_digest": "d664ec240a9a6d324ed9ea572f3749ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8226, "upload_time": "2016-12-20T15:27:52", "url": "https://files.pythonhosted.org/packages/73/7f/f7b2996753e859e42d9bc39b1f9534ebc515273325051254ed348e5b7a4f/asymmetric_jwt_auth-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "de669c6c17316b6638431fb73e27edf4", "sha256": "a1421d8f9099e59ee5125b7a9b2568a881a527ae6e6561ea73273b9bf25afe35" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "de669c6c17316b6638431fb73e27edf4", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 15430, "upload_time": "2017-01-23T20:17:14", "url": "https://files.pythonhosted.org/packages/44/ce/0e6f04730478f71e0fa4500b7ce92dd3fda523cd569680ebc19c0eacda13/asymmetric_jwt_auth-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "acd7b44149406bbb727288ab566c5f93", "sha256": "7e9114d9b64c8363d4c6cb484b8294d48c074365bc8fcb4d169154da2a60a373" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.3.0.tar.gz", "has_sig": true, "md5_digest": "acd7b44149406bbb727288ab566c5f93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15303, "upload_time": "2017-01-23T20:17:12", "url": "https://files.pythonhosted.org/packages/9c/ad/51c2c182119c27d6dd203546902732ba834797434447aed366f32fb0f442/asymmetric_jwt_auth-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a6f1733742e84069503cc852b0cf48a6", "sha256": "e0123a57790849fad1df94c08dbc06866fb29fe0f319bb2effddc5439de73b4f" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.3.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "a6f1733742e84069503cc852b0cf48a6", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 15421, "upload_time": "2017-04-19T21:14:45", "url": "https://files.pythonhosted.org/packages/c5/f7/254f9188866ab7e1baeb908c67bdb86d112af61168dc0f18ea9f42c9d2f0/asymmetric_jwt_auth-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d97100a73866306f2dde402bd257dedb", "sha256": "215547e1546b3248af4f47dcea95cbecc2b4bbe8ac59dab7e6d4c2d1d6287edb" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.3.1.tar.gz", "has_sig": true, "md5_digest": "d97100a73866306f2dde402bd257dedb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15357, "upload_time": "2017-04-19T21:14:44", "url": "https://files.pythonhosted.org/packages/a8/c9/0f969bdba6198009287aa8b65b69748129a55e7e82a38dc5a0c0b7825cff/asymmetric_jwt_auth-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "5ee83b31b287eabc1d73fee77526b83b", "sha256": "77ec816bac5c1fd84d1dcde82d9a8f0b28ebd4b7c3f6f791cde93790ad06802d" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5ee83b31b287eabc1d73fee77526b83b", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 23423, "upload_time": "2017-12-27T15:57:57", "url": "https://files.pythonhosted.org/packages/e1/e5/7b4c0de95f4890ba9334f43dcf060896abf0576e54b1881e0956fa2ee6ef/asymmetric_jwt_auth-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9445afb62ca38d7483365f1eff6378c", "sha256": "5554321c96cec513273a98ae8281b6fe53eea57442d75fce9635524fe0d1812e" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.0.tar.gz", "has_sig": true, "md5_digest": "e9445afb62ca38d7483365f1eff6378c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22029, "upload_time": "2017-12-27T15:57:53", "url": "https://files.pythonhosted.org/packages/e4/67/dfd3cd6235d5870050babd2fed1715c7491abd489f4b0b76d9dfd93754ba/asymmetric_jwt_auth-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "aa1506bb56a02b678d50cf04a133ee7e", "sha256": "76248f5fff9c47cddebf51efce39dd2e3a0c8caae1385ff60a67efa4387463f9" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "aa1506bb56a02b678d50cf04a133ee7e", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 23448, "upload_time": "2017-12-27T16:48:38", "url": "https://files.pythonhosted.org/packages/04/31/79f586948538ffc1d128275033e75e1e1016cf8770e63a2568c91bbe9ce7/asymmetric_jwt_auth-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3590c7f5066ed8860560b28df36b3b74", "sha256": "0a5a12c9f95afc808bdf06ff4d79fb00bd9b0ff9a1ffd844e839c74f05f45dee" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.1.tar.gz", "has_sig": true, "md5_digest": "3590c7f5066ed8860560b28df36b3b74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22049, "upload_time": "2017-12-27T16:48:35", "url": "https://files.pythonhosted.org/packages/01/38/3a64c6adfef66f6146b32a7e53d63674728b39595320d067bbe91d334995/asymmetric_jwt_auth-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "21a6ac413158920a1f8b5e5770ac3ac2", "sha256": "48ed104d13e6a4cf8a8f4ff372e6331fa79477751c97bcdf789c804bd9ae40a2" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "21a6ac413158920a1f8b5e5770ac3ac2", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 23434, "upload_time": "2018-04-05T15:11:12", "url": "https://files.pythonhosted.org/packages/29/c0/9d969dcdf61b21dfab82473deeb769ad2562134f42f79cb9227b76eef974/asymmetric_jwt_auth-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e06b550ba5b7630e040d65f58b7d4ffc", "sha256": "b10b51ef261b22997807b09b26cbf04402b2784b5d01c0e13a1227561a9a7e7f" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.2.tar.gz", "has_sig": true, "md5_digest": "e06b550ba5b7630e040d65f58b7d4ffc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22145, "upload_time": "2018-04-05T15:11:10", "url": "https://files.pythonhosted.org/packages/20/b5/5f859fe359f11b242cced5ff59b0b51357b91743286e215d5e6bc1af691b/asymmetric_jwt_auth-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "dcabfc1270e20b508a3d0ced329a1126", "sha256": "964134d67ce3eb13e1d934c46e0ee89aa686e438e6ecf9e2a0f7c8f370886c1d" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dcabfc1270e20b508a3d0ced329a1126", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 23450, "upload_time": "2018-04-23T20:29:16", "url": "https://files.pythonhosted.org/packages/50/bd/9197db0f6336cccf89673014671de5e5365f6d3546ade47aaa6cfb58e191/asymmetric_jwt_auth-0.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81b12238260084757f3c6ada9dd694c5", "sha256": "53fb4578f450d0cd130045e7533d16f3461fefd39165a22a1877df804eb97542" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.3.tar.gz", "has_sig": false, "md5_digest": "81b12238260084757f3c6ada9dd694c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19737, "upload_time": "2018-04-23T20:29:14", "url": "https://files.pythonhosted.org/packages/5a/41/df8bac516661c3296609fa3f3d70dc675e759b43f57d9f56d28db0fc4b4f/asymmetric_jwt_auth-0.4.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dcabfc1270e20b508a3d0ced329a1126", "sha256": "964134d67ce3eb13e1d934c46e0ee89aa686e438e6ecf9e2a0f7c8f370886c1d" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dcabfc1270e20b508a3d0ced329a1126", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 23450, "upload_time": "2018-04-23T20:29:16", "url": "https://files.pythonhosted.org/packages/50/bd/9197db0f6336cccf89673014671de5e5365f6d3546ade47aaa6cfb58e191/asymmetric_jwt_auth-0.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81b12238260084757f3c6ada9dd694c5", "sha256": "53fb4578f450d0cd130045e7533d16f3461fefd39165a22a1877df804eb97542" }, "downloads": -1, "filename": "asymmetric_jwt_auth-0.4.3.tar.gz", "has_sig": false, "md5_digest": "81b12238260084757f3c6ada9dd694c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19737, "upload_time": "2018-04-23T20:29:14", "url": "https://files.pythonhosted.org/packages/5a/41/df8bac516661c3296609fa3f3d70dc675e759b43f57d9f56d28db0fc4b4f/asymmetric_jwt_auth-0.4.3.tar.gz" } ] }