72
72
from securesystemslib import util as sslib_util
73
73
74
74
from tuf import exceptions
75
- from tuf .api .metadata import TargetFile , Targets
75
+ from tuf .api .metadata import Metadata , TargetFile
76
76
from tuf .ngclient ._internal import requests_fetcher , trusted_metadata_set
77
77
from tuf .ngclient .config import UpdaterConfig
78
78
from tuf .ngclient .fetcher import FetcherInterface
@@ -331,7 +331,7 @@ def _load_root(self) -> None:
331
331
# 404/403 means current root is newest available
332
332
break
333
333
334
- def _load_timestamp (self ) -> None :
334
+ def _load_timestamp (self ) -> Metadata :
335
335
"""Load local and remote timestamp metadata"""
336
336
try :
337
337
data = self ._load_local_metadata ("timestamp" )
@@ -344,15 +344,18 @@ def _load_timestamp(self) -> None:
344
344
data = self ._download_metadata (
345
345
"timestamp" , self .config .timestamp_max_length
346
346
)
347
- self ._trusted_set .update_timestamp (data )
347
+ timestamp = self ._trusted_set .update_timestamp (data )
348
348
self ._persist_metadata ("timestamp" , data )
349
349
350
- def _load_snapshot (self ) -> None :
350
+ return timestamp
351
+
352
+ def _load_snapshot (self ) -> Metadata :
351
353
"""Load local (and if needed remote) snapshot metadata"""
352
354
try :
353
355
data = self ._load_local_metadata ("snapshot" )
354
- self ._trusted_set .update_snapshot (data , trusted = True )
356
+ snapshot = self ._trusted_set .update_snapshot (data , trusted = True )
355
357
logger .debug ("Local snapshot is valid: not downloading new one" )
358
+ return snapshot
356
359
except (OSError , exceptions .RepositoryError ) as e :
357
360
# Local snapshot does not exist or is invalid: update from remote
358
361
logger .debug ("Local snapshot not valid as final: %s" , e )
@@ -365,15 +368,20 @@ def _load_snapshot(self) -> None:
365
368
version = snapshot_meta .version
366
369
367
370
data = self ._download_metadata ("snapshot" , length , version )
368
- self ._trusted_set .update_snapshot (data )
371
+ snapshot = self ._trusted_set .update_snapshot (data )
369
372
self ._persist_metadata ("snapshot" , data )
370
373
371
- def _load_targets (self , role : str , parent_role : str ) -> None :
374
+ return snapshot
375
+
376
+ def _load_targets (self , role : str , parent_role : str ) -> Metadata :
372
377
"""Load local (and if needed remote) metadata for 'role'."""
373
378
try :
374
379
data = self ._load_local_metadata (role )
375
- self ._trusted_set .update_delegated_targets (data , role , parent_role )
380
+ delegated_targets = self ._trusted_set .update_delegated_targets (
381
+ data , role , parent_role
382
+ )
376
383
logger .debug ("Local %s is valid: not downloading new one" , role )
384
+ return delegated_targets
377
385
except (OSError , exceptions .RepositoryError ) as e :
378
386
# Local 'role' does not exist or is invalid: update from remote
379
387
logger .debug ("Failed to load local %s: %s" , role , e )
@@ -386,9 +394,13 @@ def _load_targets(self, role: str, parent_role: str) -> None:
386
394
version = metainfo .version
387
395
388
396
data = self ._download_metadata (role , length , version )
389
- self ._trusted_set .update_delegated_targets (data , role , parent_role )
397
+ delegated_targets = self ._trusted_set .update_delegated_targets (
398
+ data , role , parent_role
399
+ )
390
400
self ._persist_metadata (role , data )
391
401
402
+ return delegated_targets
403
+
392
404
def _preorder_depth_first_walk (
393
405
self , target_filepath : str
394
406
) -> Optional [TargetFile ]:
@@ -417,10 +429,9 @@ def _preorder_depth_first_walk(
417
429
418
430
# The metadata for 'role_name' must be downloaded/updated before
419
431
# its targets, delegations, and child roles can be inspected.
420
- self ._load_targets (role_name , parent_role )
432
+ role_metadata = self ._load_targets (role_name , parent_role )
421
433
422
- role_metadata : Targets = self ._trusted_set [role_name ].signed
423
- target = role_metadata .targets .get (target_filepath )
434
+ target = role_metadata .signed .targets .get (target_filepath )
424
435
425
436
if target is not None :
426
437
logger .debug ("Found target in current role %s" , role_name )
@@ -432,11 +443,13 @@ def _preorder_depth_first_walk(
432
443
# And also decrement number of visited roles.
433
444
number_of_delegations -= 1
434
445
435
- if role_metadata .delegations is not None :
446
+ if role_metadata .signed . delegations is not None :
436
447
child_roles_to_visit = []
437
448
# NOTE: This may be a slow operation if there are many
438
449
# delegated roles.
439
- for child_role in role_metadata .delegations .roles .values ():
450
+ for (
451
+ child_role
452
+ ) in role_metadata .signed .delegations .roles .values ():
440
453
if child_role .is_delegated_path (target_filepath ):
441
454
logger .debug ("Adding child role %s" , child_role .name )
442
455
0 commit comments