20
20
requests_fetcher ,
21
21
trusted_metadata_set ,
22
22
)
23
+ from tuf .ngclient .config import UpdaterConfig
23
24
from tuf .ngclient .fetcher import FetcherInterface
24
25
25
- # Globals
26
- MAX_ROOT_ROTATIONS = 32
27
- MAX_DELEGATIONS = 32
28
- DEFAULT_ROOT_MAX_LENGTH = 512000 # bytes
29
- DEFAULT_TIMESTAMP_MAX_LENGTH = 16384 # bytes
30
- DEFAULT_SNAPSHOT_MAX_LENGTH = 2000000 # bytes
31
- DEFAULT_TARGETS_MAX_LENGTH = 5000000 # bytes
32
-
33
26
logger = logging .getLogger (__name__ )
34
27
35
28
@@ -45,6 +38,7 @@ def __init__(
45
38
metadata_base_url : str ,
46
39
target_base_url : Optional [str ] = None ,
47
40
fetcher : Optional [FetcherInterface ] = None ,
41
+ config : Optional [UpdaterConfig ] = None ,
48
42
):
49
43
"""
50
44
Args:
@@ -76,6 +70,8 @@ def __init__(
76
70
else :
77
71
self ._fetcher = fetcher
78
72
73
+ self .config = config or UpdaterConfig ()
74
+
79
75
def refresh (self ) -> None :
80
76
"""
81
77
This method downloads, verifies, and loads metadata for the top-level
@@ -251,12 +247,12 @@ def _load_root(self) -> None:
251
247
252
248
# Update the root role
253
249
lower_bound = self ._trusted_set .root .signed .version + 1
254
- upper_bound = lower_bound + MAX_ROOT_ROTATIONS
250
+ upper_bound = lower_bound + self . config . max_root_rotations
255
251
256
252
for next_version in range (lower_bound , upper_bound ):
257
253
try :
258
254
data = self ._download_metadata (
259
- "root" , DEFAULT_ROOT_MAX_LENGTH , next_version
255
+ "root" , self . config . root_max_length , next_version
260
256
)
261
257
self ._trusted_set .update_root (data )
262
258
self ._persist_metadata ("root" , data )
@@ -281,7 +277,7 @@ def _load_timestamp(self) -> None:
281
277
282
278
# Load from remote (whether local load succeeded or not)
283
279
data = self ._download_metadata (
284
- "timestamp" , DEFAULT_TIMESTAMP_MAX_LENGTH
280
+ "timestamp" , self . config . timestamp_max_length
285
281
)
286
282
self ._trusted_set .update_timestamp (data )
287
283
self ._persist_metadata ("timestamp" , data )
@@ -297,7 +293,7 @@ def _load_snapshot(self) -> None:
297
293
logger .debug ("Failed to load local snapshot %s" , e )
298
294
299
295
metainfo = self ._trusted_set .timestamp .signed .meta ["snapshot.json" ]
300
- length = metainfo .length or DEFAULT_SNAPSHOT_MAX_LENGTH
296
+ length = metainfo .length or self . config . snapshot_max_length
301
297
version = None
302
298
if self ._trusted_set .root .signed .consistent_snapshot :
303
299
version = metainfo .version
@@ -317,7 +313,7 @@ def _load_targets(self, role: str, parent_role: str) -> None:
317
313
logger .debug ("Failed to load local %s: %s" , role , e )
318
314
319
315
metainfo = self ._trusted_set .snapshot .signed .meta [f"{ role } .json" ]
320
- length = metainfo .length or DEFAULT_TARGETS_MAX_LENGTH
316
+ length = metainfo .length or self . config . targets_max_length
321
317
version = None
322
318
if self ._trusted_set .root .signed .consistent_snapshot :
323
319
version = metainfo .version
@@ -336,7 +332,7 @@ def _preorder_depth_first_walk(self, target_filepath) -> Dict:
336
332
target = None
337
333
role_names = [("targets" , "root" )]
338
334
visited_role_names = set ()
339
- number_of_delegations = MAX_DELEGATIONS
335
+ number_of_delegations = self . config . max_delegations
340
336
341
337
# Preorder depth-first traversal of the graph of target delegations.
342
338
while (
@@ -417,7 +413,7 @@ def _preorder_depth_first_walk(self, target_filepath) -> Dict:
417
413
):
418
414
msg = (
419
415
f"{ len (role_names )} roles left to visit, but allowed to " ,
420
- f"visit at most { MAX_DELEGATIONS } delegations." ,
416
+ f"visit at most { self . config . max_delegations } delegations." ,
421
417
)
422
418
logger .debug (msg )
423
419
0 commit comments