diff --git a/lti/keys.py b/lti/keys.py index d291a783..ffb1dda4 100644 --- a/lti/keys.py +++ b/lti/keys.py @@ -4,13 +4,20 @@ LTI Key Management for MediaCMS Manages RSA keys for signing Deep Linking responses (stored in database) """ +from jwcrypto import jwk + def load_private_key(): - """Load private key from database""" + """Load private key from database and convert to PEM format for PyJWT""" from .models import LTIToolKeys key_obj = LTIToolKeys.get_or_create_keys() - return key_obj.private_key_jwk + + # Convert JWK dict to PEM string (PyJWT needs PEM format) + jwk_obj = jwk.JWK(**key_obj.private_key_jwk) + pem_bytes = jwk_obj.export_to_pem(private_key=True, password=None) + + return pem_bytes.decode('utf-8') def load_public_key():