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
# Classes
@@ -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,11 @@ def __init__(
76
70
else :
77
71
self ._fetcher = fetcher
78
72
73
+ if config is None :
74
+ self .config = UpdaterConfig ()
75
+ else :
76
+ self .config = config
77
+
79
78
def refresh (self ) -> None :
80
79
"""
81
80
This method downloads, verifies, and loads metadata for the top-level
@@ -248,12 +247,12 @@ def _load_root(self) -> None:
248
247
249
248
# Update the root role
250
249
lower_bound = self ._trusted_set .root .signed .version + 1
251
- upper_bound = lower_bound + MAX_ROOT_ROTATIONS
250
+ upper_bound = lower_bound + self . config . MAX_ROOT_ROTATIONS
252
251
253
252
for next_version in range (lower_bound , upper_bound ):
254
253
try :
255
254
data = self ._download_metadata (
256
- "root" , DEFAULT_ROOT_MAX_LENGTH , next_version
255
+ "root" , self . config . DEFAULT_ROOT_MAX_LENGTH , next_version
257
256
)
258
257
self ._trusted_set .update_root (data )
259
258
self ._persist_metadata ("root" , data )
@@ -278,7 +277,7 @@ def _load_timestamp(self) -> None:
278
277
279
278
# Load from remote (whether local load succeeded or not)
280
279
data = self ._download_metadata (
281
- "timestamp" , DEFAULT_TIMESTAMP_MAX_LENGTH
280
+ "timestamp" , self . config . DEFAULT_TIMESTAMP_MAX_LENGTH
282
281
)
283
282
self ._trusted_set .update_timestamp (data )
284
283
self ._persist_metadata ("timestamp" , data )
@@ -294,7 +293,7 @@ def _load_snapshot(self) -> None:
294
293
logger .debug ("Failed to load local snapshot %s" , e )
295
294
296
295
metainfo = self ._trusted_set .timestamp .signed .meta ["snapshot.json" ]
297
- length = metainfo .length or DEFAULT_SNAPSHOT_MAX_LENGTH
296
+ length = metainfo .length or self . config . DEFAULT_SNAPSHOT_MAX_LENGTH
298
297
version = None
299
298
if self ._trusted_set .root .signed .consistent_snapshot :
300
299
version = metainfo .version
@@ -314,7 +313,7 @@ def _load_targets(self, role: str, parent_role: str) -> None:
314
313
logger .debug ("Failed to load local %s: %s" , role , e )
315
314
316
315
metainfo = self ._trusted_set .snapshot .signed .meta [f"{ role } .json" ]
317
- length = metainfo .length or DEFAULT_TARGETS_MAX_LENGTH
316
+ length = metainfo .length or self . config . DEFAULT_TARGETS_MAX_LENGTH
318
317
version = None
319
318
if self ._trusted_set .root .signed .consistent_snapshot :
320
319
version = metainfo .version
@@ -333,7 +332,7 @@ def _preorder_depth_first_walk(self, target_filepath) -> Dict:
333
332
target = None
334
333
role_names = [("targets" , "root" )]
335
334
visited_role_names = set ()
336
- number_of_delegations = MAX_DELEGATIONS
335
+ number_of_delegations = self . config . MAX_DELEGATIONS
337
336
338
337
# Preorder depth-first traversal of the graph of target delegations.
339
338
while (
@@ -414,7 +413,7 @@ def _preorder_depth_first_walk(self, target_filepath) -> Dict:
414
413
):
415
414
msg = (
416
415
f"{ len (role_names )} roles left to visit, but allowed to " ,
417
- f"visit at most { MAX_DELEGATIONS } delegations." ,
416
+ f"visit at most { self . config . MAX_DELEGATIONS } delegations." ,
418
417
)
419
418
logger .debug (msg )
420
419
0 commit comments