Python: jwt
import jwt from datetime import datetime payload_data = { 'sub': '4242', 'iss': 'issuer', # issuer of the token 'name': 'Jessica Temporal', 'nickname': 'Jess', 'exp': int(datetime.now().timestamp()) + 5 } key = 'secret' token = jwt.encode( payload=payload_data, key=key ) print(token) header = jwt.get_unverified_header(token) print(header) decoded_payload = jwt.decode( jwt=token, key=key, algorithms=[header['alg']] ) print(decoded_payload)
import asyncio, typing, types import os import random from contextlib import contextmanager, asynccontextmanager from urllib.request import urlopen import jwt from datetime import datetime from cryptography.hazmat.primitives import serialization from jwt.exceptions import ExpiredSignatureError payload_data = { 'sub': '4242', 'name': 'Jessica Temporal', 'nickname': 'Jess', 'exp': int(datetime.now().timestamp())+5 } private_key = open(os.path.expanduser('~/.ssh/id_rsa'), 'r').read() public_key = open(os.path.expanduser('~/.ssh/id_rsa.pub'), 'r').read() private_key_obj = serialization.load_ssh_private_key(private_key.encode(), password=b'') print(private_key_obj) public_key_obj = serialization.load_ssh_public_key(public_key.encode()) print(public_key_obj) secret = 'my_super_secret' token = jwt.encode( payload=payload_data, key=private_key_obj, # have to use private key sign algorithm='RS256' ) print('~' * 80) print(token) header = jwt.get_unverified_header(token) print(header) try: payload = jwt.decode( jwt=token, key=public_key_obj, # have to use public key verify algorithms=[header['alg']] ) print(payload) except ExpiredSignatureError as e: print(e, e.args)