Esempio n. 1
0
def get_jwk_from_public_key(key_name):
    key_path = os.path.join(app.root_path, '..', 'configs', key_name)
    f = open(key_path, 'r')
    key_content = f.read()
    jwk = Registration.get_jwk(key_content)
    f.close()
    return jwk
Esempio n. 2
0
    def get_jwks(self, iss=None, client_id=None, **kwargs):
        search_kwargs = {}
        if iss:
            search_kwargs['lti_tools__issuer'] = iss
        if client_id:
            search_kwargs['lti_tools__client_id'] = client_id

        if search_kwargs:
            search_kwargs['lti_tools__is_active'] = True
            qs = self._keys_cls.objects.filter(**search_kwargs)
        else:
            qs = self._keys_cls.objects.all()

        jwks = []
        public_key_lst = []

        for key in qs:
            if key.public_key and key.public_key not in public_key_lst:
                if key.public_jwk:
                    jwks.append(json.loads(key.public_jwk))
                else:
                    jwks.append(Registration.get_jwk(key.public_key))
                public_key_lst.append(key.public_key)
        return {
            'keys': jwks
        }
Esempio n. 3
0
 def save(self, *args, **kwargs):  # pylint: disable=arguments-differ,signature-differs
     if self.public_key:
         public_jwk_dict = Registration.get_jwk(self.public_key)
         self.public_jwk = json.dumps(public_jwk_dict)
     else:
         self.public_key = None
         self.public_jwk = None
     super(LtiToolKey, self).save(*args, **kwargs)