diff --git a/tests/test_keydb.py b/tests/test_keydb.py index 8bc782aa..4743223b 100755 --- a/tests/test_keydb.py +++ b/tests/test_keydb.py @@ -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)) diff --git a/tuf/keydb.py b/tuf/keydb.py index b65d123a..cf4b99ec 100755 --- a/tuf/keydb.py +++ b/tuf/keydb.py @@ -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.')