Merge pull request #712 from vladimir-v-diaz/refactor_code_that_sets_previous_keyids

Refactor how previous keyids are saved in add_verification_key()
This commit is contained in:
Vladimir Diaz 2018-04-26 13:33:33 -04:00 committed by GitHub
commit 73dcee1bf2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 5 deletions

View file

@ -137,7 +137,8 @@ def test_writeall(self):
# sub-directory in 'temporary_directory' if it does not exist.
repository_directory = os.path.join(temporary_directory, 'repository')
metadata_directory = os.path.join(repository_directory,
repo_tool.METADATA_STAGED_DIRECTORY_NAME)
repo_tool.METADATA_STAGED_DIRECTORY_NAME)
repository = repo_tool.create_new_repository(repository_directory, repository_name)
# (1) Load the public and private keys of the top-level roles, and one
@ -230,7 +231,8 @@ def test_writeall(self):
role_filepath = os.path.join(metadata_directory, role)
role_signable = securesystemslib.util.load_json_file(role_filepath)
# Raise 'securesystemslib.exceptions.FormatError' if 'role_signable' is an invalid signable.
# Raise 'securesystemslib.exceptions.FormatError' if 'role_signable' is
# an invalid signable.
tuf.formats.check_signable_object_format(role_signable)
self.assertTrue(os.path.exists(role_filepath))

View file

@ -671,10 +671,13 @@ def add_verification_key(self, key, expires=None):
keyid = key['keyid']
roleinfo = tuf.roledb.get_roleinfo(self.rolename, self._repository_name)
previous_keyids = roleinfo['keyids']
# Save the keyids that are being replaced since certain roles will need to
# re-sign metadata with these keys (e.g., root). Use list() to make a copy
# of roleinfo['keyids'] to ensure we're modifying distinct lists.
previous_keyids = list(roleinfo['keyids'])
# Add 'key' to the role's entry in 'tuf.roledb.py' and avoid duplicates.
if keyid not in previous_keyids:
# Add 'key' to the role's entry in 'tuf.roledb.py', and avoid duplicates.
if keyid not in roleinfo['keyids']:
roleinfo['keyids'].append(keyid)
roleinfo['previous_keyids'] = previous_keyids