{ "info": { "author": "Dmitry Orlov ", "author_email": "me@mosquito.su", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Natural Language :: Russian", "Operating System :: MacOS", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython" ], "description": "PyJWT RSA Helper\n================\n\n\nHelpers for JWT tokens with RSA.\n\n\n.. code-block:: python\n\n >>> from jwt_rsa.token import JWT\n >>> from jwt_rsa.rsa import generate_rsa\n >>>\n >>> bits = 2048\n >>>\n >>> private_key, public_key = generate_rsa(bits)\n >>>\n >>> jwt = JWT(private_key, public_key)\n >>>\n >>> token = jwt.encode(foo='bar')\n >>> result = jwt.decode(token)\n >>> result\n {'foo': 'bar', 'exp': 1525941819.638339, 'nbf': 1523349799.638342}\n >>> # Expired token\n >>> token = jwt.encode(foo='bar', expired=-1)\n >>> jwt.decode(token)\n Traceback (most recent call last):\n ...\n jwt.exceptions.ExpiredSignatureError: Signature has expired\n >>> # No verify token signature and expiration\n >>> jwt.decode(token, verify=False)\n {'foo': 'bar', 'exp': -1, 'nbf': 1523350046.935803}\n\n\nCommand line utilities\n----------------------\n\nModule provides following utilities\n\njwt-rsa-keygen\n++++++++++++++\n\nCreates a new key pair:\n\n.. code-block::\n\n $ jwt-rsa-keygen -h \u00b18 ?3 \ue0b2\ue0a0master\n usage: jwt-rsa-keygen [-h] [-b BITS] [-P]\n\n optional arguments:\n -h, --help show this help message and exit\n -b BITS, --bits BITS\n -P, --pem\n\n\nBy default this utility return JSON-serialized key pair:\n\n.. code-block::\n\n $ jwt-rsa-keygen \u00b18 ?3 \ue0b2\ue0a0master\n {\n \"private\": \"MIIEvgIBADANBg......h3MBsSzx\",\n \"public\": \"MIIBCgKCAQEAxUU......5niBEjAB\"\n }\n\nAdd parameter `-P` for return in PEM format:\n\n.. code-block::\n\n $ jwt-rsa-keygen -P \u00b18 ?3 \ue0b2\ue0a0master\n -----BEGIN PRIVATE KEY-----\n MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDeiI5V/O/Mbff\n ...\n LGQgWf5ch0t1+Rh3tjIuuSc=\n -----END PRIVATE KEY-----\n\n -----BEGIN RSA PUBLIC KEY-----\n MIIBCgKCAQEAw3oiOVfzvzG331nAL5hGHbblcCaV3pbfoCiFRgwpNPf7snIJtw97\n ...\n 3k2mMT1z6NFO6e6LMxg2zrqs3zgqwx5/9wIDAQAB\n -----END RSA PUBLIC KEY-----\n\n\njwt-rsa-verify\n++++++++++++++\n\nVerify JSON serialized key pair:\n\n.. code-block::\n\n $ jwt-rsa-keygen | jwt-rsa-verify \u00b18 ?3 \ue0b2\ue0a0master\n INFO:root:Awaiting JSON on stdin...\n INFO:root:Signing OK\n INFO:root:Verifying OK\n\nOr failed when key pair is invalid or doesn't match:\n\n.. code-block::\n\n $ jwt-rsa-keygen | sed 's/M/j/' | jwt-rsa-verify \u00b18 ?3 \ue0b2\ue0a0master\n INFO:root:Awaiting JSON on stdin...\n Traceback (most recent call last):\n ...\n ValueError: Could not deserialize key data.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyjwt-rsa", "package_url": "https://pypi.org/project/pyjwt-rsa/", "platform": "all", "project_url": "https://pypi.org/project/pyjwt-rsa/", "project_urls": null, "release_url": "https://pypi.org/project/pyjwt-rsa/0.3.0/", "requires_dist": [ "pyjwt", "cryptography", "coverage (!=4.3); extra == 'develop'", "pylama; extra == 'develop'", "pytest; extra == 'develop'", "pytest-cov; extra == 'develop'", "tox (>=2.4); extra == 'develop'" ], "requires_python": ">=3.4.*, <4", "summary": "RSA helpers for PyJWT", "version": "0.3.0" }, "last_serial": 4563303, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "31183c6691465b4a9ad90ed5679f6ae1", "sha256": "8406f6a96c981ecf470de5812dd1c57f2d905135a3d852f267df1b29fe3ba949" }, "downloads": -1, "filename": "pyjwt_rsa-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "31183c6691465b4a9ad90ed5679f6ae1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6253, "upload_time": "2018-04-16T10:44:12", "url": "https://files.pythonhosted.org/packages/d9/a0/5b2f72e6381e035357a442143991fa6fc588161fb781850efa97935af3c6/pyjwt_rsa-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "999bdeeede7d93bb06e18451e57fa38b", "sha256": "ff034bb125de14a60c31eadec14322b71c2edb22bdc0ad68be9e8f4f4c7717b4" }, "downloads": -1, "filename": "pyjwt-rsa-0.1.1.tar.gz", "has_sig": false, "md5_digest": "999bdeeede7d93bb06e18451e57fa38b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5298, "upload_time": "2018-04-16T10:44:14", "url": "https://files.pythonhosted.org/packages/75/3e/ebcf7ef08961f0e3826e219ed708a40c385db7763adf33d4bf74b5016aa9/pyjwt-rsa-0.1.1.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "12201552a721f97628680746836b3ee7", "sha256": "fa39e99979ffab2f915160e172ba7f02523190acaa5758ac69c6f19031dcb57d" }, "downloads": -1, "filename": "pyjwt_rsa-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "12201552a721f97628680746836b3ee7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6229, "upload_time": "2018-04-16T11:26:25", "url": "https://files.pythonhosted.org/packages/72/f8/e45b31c21fdee0b0f1ba70b852cd1254ab6bc9ebf1a3ee67866e85941270/pyjwt_rsa-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20be984fe5e47b0fddc1242c7ee47a4b", "sha256": "8e428a06893a46fa018e2ca39dff4a35737662bd6ce31f2ba1f9e062842545e1" }, "downloads": -1, "filename": "pyjwt-rsa-0.1.3.tar.gz", "has_sig": false, "md5_digest": "20be984fe5e47b0fddc1242c7ee47a4b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5280, "upload_time": "2018-04-16T11:26:26", "url": "https://files.pythonhosted.org/packages/e3/ab/fb72c7bbc6bed96b4484943a140782c98e3d95ce880124091380da34afff/pyjwt-rsa-0.1.3.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "d2683cc3c76d514a539e3f6dddc980bc", "sha256": "fbf904bc1f97efe32254bb6c950735d2643488de07ed99a19bbc9c77c25db310" }, "downloads": -1, "filename": "pyjwt_rsa-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d2683cc3c76d514a539e3f6dddc980bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6240, "upload_time": "2018-04-16T20:47:23", "url": "https://files.pythonhosted.org/packages/59/2b/e52e11a04693cb63e9700322552774c3d0b9d64eb4768031114fa1ecf68d/pyjwt_rsa-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9cd62ed401247ca69db92f6bd7cefa08", "sha256": "c19c7c3c4e70161e6e932d99ce82e9b23e14cff545e8edebf29c27d851d921b9" }, "downloads": -1, "filename": "pyjwt-rsa-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9cd62ed401247ca69db92f6bd7cefa08", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5290, "upload_time": "2018-04-16T20:47:24", "url": "https://files.pythonhosted.org/packages/bb/dd/21449dedd7646a42a3b20368d891340d0ea2a0259bcaceaa25efadee4c52/pyjwt-rsa-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "ac8574b354e7e4b258fbc413d2be994f", "sha256": "9b3c5b3bfacb2daa2040719a1923db322e153550db3f3a23b36a672ef7837aae" }, "downloads": -1, "filename": "pyjwt_rsa-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "ac8574b354e7e4b258fbc413d2be994f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6539, "upload_time": "2018-09-02T20:41:13", "url": "https://files.pythonhosted.org/packages/3f/0f/4d6b4f2b303ea90c930f1d90572f26303e09abfb13735391d5ba7fd9b1bb/pyjwt_rsa-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c86c63615def470d1d3f5100b6ee5b44", "sha256": "aa7f80567de00b852d359d7b39de0ac7b1f725d0dca444fee70a102a21975883" }, "downloads": -1, "filename": "pyjwt-rsa-0.1.6.tar.gz", "has_sig": false, "md5_digest": "c86c63615def470d1d3f5100b6ee5b44", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5360, "upload_time": "2018-09-02T20:41:14", "url": "https://files.pythonhosted.org/packages/d1/39/f73f7778af34f21fe6de1e5daa84bf92aa7ef9d0d95735f18fa28857bcfd/pyjwt-rsa-0.1.6.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2b599771cfcf1fce555c2743546eaa91", "sha256": "d51020b8afedf2ebb596d71784342f95c3cd48e708293a63d767681c9c3a2576" }, "downloads": -1, "filename": "pyjwt_rsa-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2b599771cfcf1fce555c2743546eaa91", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6546, "upload_time": "2018-09-02T20:43:52", "url": "https://files.pythonhosted.org/packages/3c/1f/e5f5c21f8311d973c034495d5381c014e4e14332a5ccdd333a62dd4f6335/pyjwt_rsa-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a331140908f66b995dabab3c1e90093", "sha256": "c3e77bcdd0179f4398f3fdb9ed021708655cc99a1df46571ce7dc3b1ca689b4d" }, "downloads": -1, "filename": "pyjwt-rsa-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4a331140908f66b995dabab3c1e90093", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5368, "upload_time": "2018-09-02T20:43:53", "url": "https://files.pythonhosted.org/packages/28/9d/2cc7f3fa23459456e360c8d69152908e531d3aafdec743c94a9e348c39c6/pyjwt-rsa-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "0ca6a11ffebc1fe42c3db2689adc04fa", "sha256": "dd8ac726fb3b7d5dff9db49535b57484ef1ba15aa895e7588db286ef218877c4" }, "downloads": -1, "filename": "pyjwt_rsa-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0ca6a11ffebc1fe42c3db2689adc04fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6801, "upload_time": "2018-09-02T21:07:04", "url": "https://files.pythonhosted.org/packages/80/45/6385f9225f050193a86ea12a8dfd868d29a8e48fe4d9b7fd3f0810ba1813/pyjwt_rsa-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d3b1cf99d3c450bcd753fd01494e0fb9", "sha256": "889a663bc3c202776e17de3c460237feacbb034a7a31bf32991a5057a0804891" }, "downloads": -1, "filename": "pyjwt-rsa-0.2.1.tar.gz", "has_sig": false, "md5_digest": "d3b1cf99d3c450bcd753fd01494e0fb9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5567, "upload_time": "2018-09-02T21:07:05", "url": "https://files.pythonhosted.org/packages/33/9f/5235df9db5ef502deb654be309bc426ecc316aa34a7fe3c12ea336f9492f/pyjwt-rsa-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "52134c8a0d71ffca59dbc987ce6ae967", "sha256": "4578cec960ca24586d7f4b79f95616d7f0f4cb059c52c363e2438c45f1ba4459" }, "downloads": -1, "filename": "pyjwt_rsa-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "52134c8a0d71ffca59dbc987ce6ae967", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6801, "upload_time": "2018-09-02T21:09:25", "url": "https://files.pythonhosted.org/packages/f4/3c/6b70840e7947e5bd0b78953bb23f56024ca6582be1d490eedd7fdab61512/pyjwt_rsa-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "628b1197bfab7fc199b32144d9042b4c", "sha256": "7925147c231545fef98eb8c5a1f55f34384d015048874ad4b35479a7f1c6c3b8" }, "downloads": -1, "filename": "pyjwt-rsa-0.2.2.tar.gz", "has_sig": false, "md5_digest": "628b1197bfab7fc199b32144d9042b4c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5568, "upload_time": "2018-09-02T21:09:27", "url": "https://files.pythonhosted.org/packages/8d/3c/d00a415ee60fd9247ca26bd5b62a5346bb7ca74969ac6222c6991eb57a54/pyjwt-rsa-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "9b80d2f93be0049a2fa9800c4c8c41b6", "sha256": "bcb9b4c4de2010d84a0627e0926b56048c0b4c9fcfaf1d5fce9ec97f210cca39" }, "downloads": -1, "filename": "pyjwt_rsa-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9b80d2f93be0049a2fa9800c4c8c41b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6876, "upload_time": "2018-12-05T10:40:34", "url": "https://files.pythonhosted.org/packages/6f/20/1cf9832cf6407ec0f151ce0e5fb6867c59d37bfd7959e1499e22d1fa8fef/pyjwt_rsa-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb19d3cd347e3a8d09fe331c2e16bacd", "sha256": "65c20cc72c9e6dfe400ba4ee448dd195c20f3e690e29dc99bd48cc17dd8166a9" }, "downloads": -1, "filename": "pyjwt-rsa-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fb19d3cd347e3a8d09fe331c2e16bacd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5644, "upload_time": "2018-12-05T10:40:36", "url": "https://files.pythonhosted.org/packages/5e/97/e8ca92c3f2e0cbecde065e020baf856811302628f35ffec1776c9bcc1c0c/pyjwt-rsa-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9b80d2f93be0049a2fa9800c4c8c41b6", "sha256": "bcb9b4c4de2010d84a0627e0926b56048c0b4c9fcfaf1d5fce9ec97f210cca39" }, "downloads": -1, "filename": "pyjwt_rsa-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9b80d2f93be0049a2fa9800c4c8c41b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 6876, "upload_time": "2018-12-05T10:40:34", "url": "https://files.pythonhosted.org/packages/6f/20/1cf9832cf6407ec0f151ce0e5fb6867c59d37bfd7959e1499e22d1fa8fef/pyjwt_rsa-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb19d3cd347e3a8d09fe331c2e16bacd", "sha256": "65c20cc72c9e6dfe400ba4ee448dd195c20f3e690e29dc99bd48cc17dd8166a9" }, "downloads": -1, "filename": "pyjwt-rsa-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fb19d3cd347e3a8d09fe331c2e16bacd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 5644, "upload_time": "2018-12-05T10:40:36", "url": "https://files.pythonhosted.org/packages/5e/97/e8ca92c3f2e0cbecde065e020baf856811302628f35ffec1776c9bcc1c0c/pyjwt-rsa-0.3.0.tar.gz" } ] }