GitHub - davedoesdev/python-jwt: Python module for generating and verifying JSON Web Tokens (original) (raw)

Module for generating and verifying JSON Web Tokens.

All versions of python-jwt are now DEPRECATED. I don't have the time to maintain this module.

Example:

import python_jwt as jwt, jwcrypto.jwk as jwk, datetime key = jwk.JWK.generate(kty='RSA', size=2048) payload = { 'foo': 'bar', 'wup': 90 }; token = jwt.generate_jwt(payload, key, 'PS256', datetime.timedelta(minutes=5)) header, claims = jwt.verify_jwt(token, key, ['PS256']) for k in payload: assert claims[k] == payload[k]

The API is described here.

Installation

Another Example

You can read and write keys from and to PEM-format strings:

import python_jwt as jwt, jwcrypto.jwk as jwk, datetime key = jwk.JWK.generate(kty='RSA', size=2048) priv_pem = key.export_to_pem(private_key=True, password=None) pub_pem = key.export_to_pem() payload = { 'foo': 'bar', 'wup': 90 }; priv_key = jwk.JWK.from_pem(priv_pem) pub_key = jwk.JWK.from_pem(pub_pem) token = jwt.generate_jwt(payload, priv_key, 'RS256', datetime.timedelta(minutes=5)) header, claims = jwt.verify_jwt(token, pub_key, ['RS256']) for k in payload: assert claims[k] == payload[k]

Licence

MIT

Tests

Lint

Code Coverage

coverage.py results are available here.

Coveralls page is here.

Benchmarks

Here are some results on a laptop with an Intel Core i5-4300M 2.6Ghz CPU and 8Gb RAM running Ubuntu 17.04.

Generate Key user (ns) sys (ns) real (ns)
RSA 103,100,000 200,000 103,341,537
Generate Token user (ns) sys (ns) real (ns)
HS256 220,000 0 226,478
HS384 220,000 0 218,233
HS512 230,000 0 225,823
PS256 1,530,000 10,000 1,536,235
PS384 1,550,000 0 1,549,844
PS512 1,520,000 10,000 1,524,844
RS256 1,520,000 10,000 1,524,565
RS384 1,530,000 0 1,528,074
RS512 1,510,000 0 1,526,089
Load Key user (ns) sys (ns) real (ns)
RSA 210,000 3,000 210,791
Verify Token user (ns) sys (ns) real (ns)
HS256 100,000 0 101,478
HS384 100,000 10,000 103,014
HS512 110,000 0 104,323
PS256 230,000 0 231,058
PS384 240,000 0 237,551
PS512 240,000 0 232,450
RS256 230,000 0 227,737
RS384 230,000 0 230,698
RS512 230,000 0 228,624