Remove tuf.Error exception raised in create_keydb_from_root_metadata()

To simplify the addition of keys to keydb, add all of the valid keyids to keydb in the for loop instead of adding the default keyid separately
This commit is contained in:
Vladimir Diaz 2016-07-27 16:33:35 -04:00
parent 876ced3279
commit ae4bbfdbfc
2 changed files with 9 additions and 12 deletions

View file

@ -311,16 +311,15 @@ def test_create_keydb_from_root_metadata(self):
consistent_snapshot = False
expires = '1985-10-21T01:21:00Z'
compression_algorithms = ['gz']
root_metadata = tuf.formats.RootFile.make_metadata(version,
expires,
keydict, roledict,
consistent_snapshot,
compression_algorithms)
self.assertEqual(None, tuf.keydb.create_keydb_from_root_metadata(root_metadata))
tuf.keydb.create_keydb_from_root_metadata(root_metadata)
# Ensure 'keyid' and 'keyid2' were added to the keydb database.
self.assertEqual(rsakey, tuf.keydb.get_key(keyid))
self.assertEqual(rsakey2, tuf.keydb.get_key(keyid2))

View file

@ -113,25 +113,23 @@ def create_keydb_from_root_metadata(root_metadata, repository_name='default'):
if key_metadata['keytype'] in _SUPPORTED_KEY_TYPES:
# 'key_metadata' is stored in 'KEY_SCHEMA' format. Call
# create_from_metadata_format() to get the key in 'RSAKEY_SCHEMA'
# format, which is the format expected by 'add_key()'.
# format, which is the format expected by 'add_key()'. Note:
# The 'keyids' returned by format_metadata_to_key() include keyids in
# addition to the default keyid listed in 'key_dict'. The additional
# keyids are generated according to tuf.conf.REPOSITORY_HASH_ALGORITHMS.
key_dict, keyids = tuf.keys.format_metadata_to_key(key_metadata)
try:
add_key(key_dict, keyid_in_root_metadata, repository_name)
for keyid in keyids:
key_dict['keyid'] = keyid
add_key(key_dict, keyid=None, repository_name=repository_name)
# Although keyid duplicates should *not* occur (unique dict keys), log a
# warning and continue.
# warning and continue. Howerver, 'key_dict' may have already been
# adding to the keydb elsewhere.
except tuf.KeyAlreadyExistsError as e: # pragma: no cover
logger.warning(e)
continue
# 'tuf.Error' raised if keyid does not match the keyid of 'rsakey_dict'.
except tuf.Error as e:
logger.error(e)
continue
else:
logger.warning('Root Metadata file contains a key with an invalid keytype.')