Skip to main content

RSA helpers for PyJWT

Project description

Helpers for JWT tokens with RSA.

>>> from jwt_rsa.token import JWT
>>> from jwt_rsa.rsa import generate_rsa
>>>
>>> bits = 2048
>>>
>>> private_key, public_key = generate_rsa(bits)
>>>
>>> jwt = JWT(private_key, public_key)
>>>
>>> token = jwt.encode(foo='bar')
>>> result = jwt.decode(token)
>>> result
{'foo': 'bar', 'exp': 1525941819.638339, 'nbf': 1523349799.638342}
>>> # Expired token
>>> token = jwt.encode(foo='bar', expired=-1)
>>> jwt.decode(token)
Traceback (most recent call last):
...
jwt.exceptions.ExpiredSignatureError: Signature has expired
>>> # No verify token signature and expiration
>>> jwt.decode(token, verify=False)
{'foo': 'bar', 'exp': -1, 'nbf': 1523350046.935803}

Command line utilities

Module provides following utilities

jwt-rsa-keygen

Creates a new key pair:

$ jwt-rsa-keygen -h                                                                                                                                                                                              ±8 ?3 master
usage: jwt-rsa-keygen [-h] [-b BITS] [-P]

optional arguments:
  -h, --help            show this help message and exit
  -b BITS, --bits BITS
  -P, --pem

By default this utility return JSON-serialized key pair:

$ jwt-rsa-keygen                                                                                                                                                                                                 ±8 ?3 master
{
   "private": "MIIEvgIBADANBg......h3MBsSzx",
   "public": "MIIBCgKCAQEAxUU......5niBEjAB"
}

Add parameter -P for return in PEM format:

$ jwt-rsa-keygen -P                                                                                                                                                                                              ±8 ?3 master
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDeiI5V/O/Mbff
...
LGQgWf5ch0t1+Rh3tjIuuSc=
-----END PRIVATE KEY-----

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAw3oiOVfzvzG331nAL5hGHbblcCaV3pbfoCiFRgwpNPf7snIJtw97
...
3k2mMT1z6NFO6e6LMxg2zrqs3zgqwx5/9wIDAQAB
-----END RSA PUBLIC KEY-----

jwt-rsa-verify

Verify JSON serialized key pair:

$ jwt-rsa-keygen | jwt-rsa-verify                                                                                                                                                                                ±8 ?3 master
INFO:root:Awaiting JSON on stdin...
INFO:root:Signing OK
INFO:root:Verifying OK

Or failed when key pair is invalid or doesn’t match:

$ jwt-rsa-keygen | sed 's/M/j/' | jwt-rsa-verify                                                                                                                                                                 ±8 ?3 master
INFO:root:Awaiting JSON on stdin...
Traceback (most recent call last):
  ...
ValueError: Could not deserialize key data.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyjwt-rsa-0.1.1.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

pyjwt_rsa-0.1.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file pyjwt-rsa-0.1.1.tar.gz.

File metadata

  • Download URL: pyjwt-rsa-0.1.1.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyjwt-rsa-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ff034bb125de14a60c31eadec14322b71c2edb22bdc0ad68be9e8f4f4c7717b4
MD5 999bdeeede7d93bb06e18451e57fa38b
BLAKE2b-256 753eebcf7ef08961f0e3826e219ed708a40c385db7763adf33d4bf74b5016aa9

See more details on using hashes here.

File details

Details for the file pyjwt_rsa-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pyjwt_rsa-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8406f6a96c981ecf470de5812dd1c57f2d905135a3d852f267df1b29fe3ba949
MD5 31183c6691465b4a9ad90ed5679f6ae1
BLAKE2b-256 d9a05b2f72e6381e035357a442143991fa6fc588161fb781850efa97935af3c6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page