@@ -261,11 +261,11 @@ def __init__(
261
261
self .source = None
262
262
if isinstance (keys , dict ):
263
263
if "keys" in keys :
264
- self ._do_keys (keys ["keys" ])
264
+ self ._add_jwk_dicts (keys ["keys" ])
265
265
else :
266
- self ._do_keys ([keys ])
266
+ self ._add_jwk_dicts ([keys ])
267
267
else :
268
- self ._do_keys (keys )
268
+ self ._add_jwk_dicts (keys )
269
269
else :
270
270
self ._set_source (source , fileformat )
271
271
if self .local :
@@ -306,18 +306,34 @@ def _local_update_required(self) -> bool:
306
306
self .last_local = stat .st_mtime
307
307
return True
308
308
309
- @keys_writer
310
309
def do_keys (self , keys ):
311
- return self ._do_keys (keys )
310
+ """Compatibility function for add_jwk_dicts()"""
311
+ self .add_jwk_dicts (keys )
312
312
313
- def _do_keys (self , keys ):
313
+ @keys_writer
314
+ def add_jwk_dicts (self , keys ):
314
315
"""
315
- Go from JWK description to binary keys
316
+ Add JWK dictionaries
316
317
317
- :param keys:
318
+ :param keys: List of JWK dictionaries
318
319
:return:
319
320
"""
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 = []
321
337
322
338
for inst in keys :
323
339
if inst ["kty" ].lower () in K2C :
@@ -361,14 +377,13 @@ def _do_keys(self, keys):
361
377
if _key not in self ._keys :
362
378
if not _key .kid :
363
379
_key .add_kid ()
364
- _new_key .append (_key )
380
+ _new_keys .append (_key )
365
381
_error = ""
366
382
367
383
if _error :
368
384
LOGGER .warning ("While loading keys, %s" , _error )
369
385
370
- if _new_key :
371
- self ._keys .extend (_new_key )
386
+ return _new_keys
372
387
373
388
self .last_updated = time .time ()
374
389
@@ -386,9 +401,9 @@ def _do_local_jwk(self, filename):
386
401
with open (filename ) as input_file :
387
402
_info = json .load (input_file )
388
403
if "keys" in _info :
389
- self ._do_keys (_info ["keys" ])
404
+ self ._add_jwk_dicts (_info ["keys" ])
390
405
else :
391
- self ._do_keys ([_info ])
406
+ self ._add_jwk_dicts ([_info ])
392
407
self .last_local = time .time ()
393
408
self .time_out = self .last_local + self .cache_time
394
409
return True
@@ -424,7 +439,7 @@ def _do_local_der(self, filename, keytype, keyusage=None, kid=""):
424
439
if kid :
425
440
key_args ["kid" ] = kid
426
441
427
- self ._do_keys ([key_args ])
442
+ self ._add_jwk_dicts ([key_args ])
428
443
self .last_local = time .time ()
429
444
self .time_out = self .last_local + self .cache_time
430
445
return True
@@ -471,7 +486,7 @@ def do_remote(self):
471
486
472
487
LOGGER .debug ("Loaded JWKS: %s from %s" , _http_resp .text , self .source )
473
488
try :
474
- self ._do_keys (self .imp_jwks ["keys" ])
489
+ self ._add_jwk_dicts (self .imp_jwks ["keys" ])
475
490
except KeyError :
476
491
LOGGER .error ("No 'keys' keyword in JWKS" )
477
492
self .ignore_errors_until = time .time () + self .ignore_errors_period
@@ -834,7 +849,7 @@ def load(self, spec):
834
849
"""
835
850
_keys = spec .get ("keys" , [])
836
851
if _keys :
837
- self ._do_keys (_keys )
852
+ self ._add_jwk_dicts (_keys )
838
853
839
854
for attr , default in self .params .items ():
840
855
val = spec .get (attr )
0 commit comments