from authlib.common.encoding import json_dumps class KeySet: """This class represents a JSON Web Key Set.""" def __init__(self, keys): self.keys = keys def as_dict(self, is_private=False, **params): """Represent this key as a dict of the JSON Web Key Set.""" return {'keys': [k.as_dict(is_private, **params) for k in self.keys]} def as_json(self, is_private=False, **params): """Represent this key set as a JSON string.""" obj = self.as_dict(is_private, **params) return json_dumps(obj) def find_by_kid(self, kid): """Find the key matches the given kid value. :param kid: A string of kid :return: Key instance :raise: ValueError """ # Proposed fix, feel free to do something else but the idea is that we take the only key of the set if no kid is specified if kid is None and len(self.keys) == 1: return self.keys[0] for k in self.keys: if k.kid == kid: return k raise ValueError('Invalid JSON Web Key Set')
Memory