From 6ae3ea6d7d2aa80ba0571503a5e6c3808c44ff64 Mon Sep 17 00:00:00 2001 From: Teodora Sechkova Date: Wed, 20 May 2020 21:36:00 +0300 Subject: [PATCH] Add TOP_LEVEL_ROLES as a global variable Add TOP_LEVEL_ROLES as a global variable in roledb. Signed-off-by: Teodora Sechkova --- tuf/client/updater.py | 4 ++-- tuf/repository_lib.py | 13 +++++-------- tuf/repository_tool.py | 2 +- tuf/roledb.py | 3 +++ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tuf/client/updater.py b/tuf/client/updater.py index c52ec661c2..2515ef66fb 100755 --- a/tuf/client/updater.py +++ b/tuf/client/updater.py @@ -755,7 +755,7 @@ def __init__(self, repository_name, repository_mirrors): # Load current and previous metadata. for metadata_set in ['current', 'previous']: - for metadata_role in ['root', 'targets', 'snapshot', 'timestamp']: + for metadata_role in tuf.roledb.TOP_LEVEL_ROLES: self._load_metadata_from_file(metadata_set, metadata_role) # Raise an exception if the repository is missing the required 'root' @@ -2435,7 +2435,7 @@ def all_targets(self): # all roles available on the repository. delegated_targets = [] for role in tuf.roledb.get_rolenames(self.repository_name): - if role in ['root', 'snapshot', 'targets', 'timestamp']: + if role in tuf.roledb.TOP_LEVEL_ROLES: continue else: diff --git a/tuf/repository_lib.py b/tuf/repository_lib.py index 5f39d6edff..5eb88a01f0 100644 --- a/tuf/repository_lib.py +++ b/tuf/repository_lib.py @@ -175,7 +175,7 @@ def _generate_and_write_metadata(rolename, metadata_filename, else: logger.debug('Not incrementing ' + repr(rolename) + '\'s version number.') - if rolename in ['root', 'targets', 'snapshot', 'timestamp'] and not allow_partially_signed: + if rolename in tuf.roledb.TOP_LEVEL_ROLES and not allow_partially_signed: # Verify that the top-level 'rolename' is fully signed. Only a delegated # role should not be written to disk without full verification of its # signature(s), since it can only be considered fully signed depending on @@ -394,18 +394,15 @@ def _delete_obsolete_metadata(metadata_directory, snapshot_metadata, else: logger.debug(repr(metadata_role) + ' found in the snapshot role.') - - # Strip metadata extension from filename. The role database does not # include the metadata extension. if metadata_role.endswith(METADATA_EXTENSION): metadata_role = metadata_role[:-len(METADATA_EXTENSION)] - else: logger.debug(repr(metadata_role) + ' does not match' ' supported extension ' + repr(METADATA_EXTENSION)) - if metadata_role in ['root', 'targets', 'snapshot', 'timestamp']: + if metadata_role in tuf.roledb.TOP_LEVEL_ROLES: logger.debug('Not removing top-level metadata ' + repr(metadata_role)) return @@ -850,7 +847,7 @@ def get_delegated_roles_metadata_filenames(metadata_directory, continue # Skip top-level roles, only interested in delegated roles. - if metadata_name in ['root', 'snapshot', 'targets', 'timestamp']: + if metadata_name in tuf.roledb.TOP_LEVEL_ROLES: continue # Prevent reloading duplicate versions if consistent_snapshot is True @@ -1131,7 +1128,7 @@ def generate_root_metadata(version, expiration_date, consistent_snapshot, # Extract the role, threshold, and keyid information of the top-level roles, # which Root stores in its metadata. The necessary role metadata is generated # from this information. - for rolename in ['root', 'targets', 'snapshot', 'timestamp']: + for rolename in tuf.roledb.TOP_LEVEL_ROLES: # If a top-level role is missing from 'tuf.roledb.py', raise an exception. if not tuf.roledb.role_exists(rolename, repository_name): @@ -1507,7 +1504,7 @@ def generate_snapshot_metadata(metadata_directory, version, expiration_date, # snapshot and timestamp roles are not listed in snapshot.json, do not # list these roles found in the metadata directory. if tuf.roledb.role_exists(rolename, repository_name) and \ - rolename not in ['root', 'snapshot', 'timestamp', 'targets']: + rolename not in tuf.roledb.TOP_LEVEL_ROLES: fileinfodict[metadata_name] = get_metadata_versioninfo(rolename, repository_name) diff --git a/tuf/repository_tool.py b/tuf/repository_tool.py index 2bfafd032f..be01ad3888 100755 --- a/tuf/repository_tool.py +++ b/tuf/repository_tool.py @@ -295,7 +295,7 @@ def writeall(self, consistent_snapshot=False, use_existing_fileinfo=False): for dirty_rolename in dirty_rolenames: # Ignore top-level roles, they will be generated later in this method. - if dirty_rolename in ['root', 'targets', 'snapshot', 'timestamp']: + if dirty_rolename in tuf.roledb.TOP_LEVEL_ROLES: continue dirty_filename = os.path.join(self._metadata_directory, diff --git a/tuf/roledb.py b/tuf/roledb.py index 5931ce6748..37add72e3a 100755 --- a/tuf/roledb.py +++ b/tuf/roledb.py @@ -73,6 +73,9 @@ _dirty_roles['default'] = set() +TOP_LEVEL_ROLES = ['root', 'targets', 'snapshot', 'timestamp'] + + def create_roledb_from_root_metadata(root_metadata, repository_name='default'): """