@@ -261,11 +261,11 @@ def __init__(
261261 self .source = None
262262 if isinstance (keys , dict ):
263263 if "keys" in keys :
264- self ._do_keys (keys ["keys" ])
264+ self ._add_jwk_dicts (keys ["keys" ])
265265 else :
266- self ._do_keys ([keys ])
266+ self ._add_jwk_dicts ([keys ])
267267 else :
268- self ._do_keys (keys )
268+ self ._add_jwk_dicts (keys )
269269 else :
270270 self ._set_source (source , fileformat )
271271 if self .local :
@@ -306,18 +306,34 @@ def _local_update_required(self) -> bool:
306306 self .last_local = stat .st_mtime
307307 return True
308308
309- @keys_writer
310309 def do_keys (self , keys ):
311- return self ._do_keys (keys )
310+ """Compatibility function for add_jwk_dicts()"""
311+ self .add_jwk_dicts (keys )
312312
313- def _do_keys (self , keys ):
313+ @keys_writer
314+ def add_jwk_dicts (self , keys ):
314315 """
315- Go from JWK description to binary keys
316+ Add JWK dictionaries
316317
317- :param keys:
318+ :param keys: List of JWK dictionaries
318319 :return:
319320 """
320- _new_key = []
321+ self ._add_jwk_dicts (keys )
322+
323+ def _add_jwk_dicts (self , keys ):
324+ _new_keys = self ._jwk_dicts_to_keys (keys )
325+ if _new_keys :
326+ self ._keys .extend (_new_keys )
327+ self .last_updated = time .time ()
328+
329+ def _jwk_dicts_to_keys (self , keys ):
330+ """
331+ Return JWK dictionaries as list of JWK objects
332+
333+ :param keys: List of JWK dictionaries
334+ :return: List of JWK objects
335+ """
336+ _new_keys = []
321337
322338 for inst in keys :
323339 if inst ["kty" ].lower () in K2C :
@@ -361,14 +377,13 @@ def _do_keys(self, keys):
361377 if _key not in self ._keys :
362378 if not _key .kid :
363379 _key .add_kid ()
364- _new_key .append (_key )
380+ _new_keys .append (_key )
365381 _error = ""
366382
367383 if _error :
368384 LOGGER .warning ("While loading keys, %s" , _error )
369385
370- if _new_key :
371- self ._keys .extend (_new_key )
386+ return _new_keys
372387
373388 self .last_updated = time .time ()
374389
@@ -386,9 +401,9 @@ def _do_local_jwk(self, filename):
386401 with open (filename ) as input_file :
387402 _info = json .load (input_file )
388403 if "keys" in _info :
389- self ._do_keys (_info ["keys" ])
404+ self ._add_jwk_dicts (_info ["keys" ])
390405 else :
391- self ._do_keys ([_info ])
406+ self ._add_jwk_dicts ([_info ])
392407 self .last_local = time .time ()
393408 self .time_out = self .last_local + self .cache_time
394409 return True
@@ -424,7 +439,7 @@ def _do_local_der(self, filename, keytype, keyusage=None, kid=""):
424439 if kid :
425440 key_args ["kid" ] = kid
426441
427- self ._do_keys ([key_args ])
442+ self ._add_jwk_dicts ([key_args ])
428443 self .last_local = time .time ()
429444 self .time_out = self .last_local + self .cache_time
430445 return True
@@ -471,7 +486,7 @@ def do_remote(self):
471486
472487 LOGGER .debug ("Loaded JWKS: %s from %s" , _http_resp .text , self .source )
473488 try :
474- self ._do_keys (self .imp_jwks ["keys" ])
489+ self ._add_jwk_dicts (self .imp_jwks ["keys" ])
475490 except KeyError :
476491 LOGGER .error ("No 'keys' keyword in JWKS" )
477492 self .ignore_errors_until = time .time () + self .ignore_errors_period
@@ -834,7 +849,7 @@ def load(self, spec):
834849 """
835850 _keys = spec .get ("keys" , [])
836851 if _keys :
837- self ._do_keys (_keys )
852+ self ._add_jwk_dicts (_keys )
838853
839854 for attr , default in self .params .items ():
840855 val = spec .get (attr )
0 commit comments