def encode_token(device_id, private_key): # TODO: make aud configurable issued_at = datetime.utcnow() payload = { 'iss': device_id, 'exp': issued_at + EXPIRATION_DELTA, 'iat': issued_at, 'nbf': issued_at, 'aud': 'local.keybar.io:9999', } return jwt.encode( payload, key=load_private_key(private_key), algorithm='RS256' ).decode('utf-8')
from django.conf import settings from keybar.models.device import Device from keybar.tests.factories.user import UserFactory from keybar.utils.crypto import load_private_key, serialize_public_key private_fpath = os.path.join( settings.BASE_DIR, 'tests', 'resources', 'keys', 'id_rsa') private_fpath2 = os.path.join( settings.BASE_DIR, 'tests', 'resources', 'keys', 'id_rsa2') with open(private_fpath, 'rb') as fobj: PRIVATE_KEY = load_private_key(fobj.read()) PUBLIC_KEY = PRIVATE_KEY.public_key() with open(private_fpath2, 'rb') as fobj: PRIVATE_KEY2 = load_private_key(fobj.read()) PUBLIC_KEY2 = PRIVATE_KEY2.public_key() class DeviceFactory(factory.DjangoModelFactory): user = factory.SubFactory(UserFactory) public_key = serialize_public_key(PUBLIC_KEY) class Meta: model = Device