From 7021dba28593e9e8031dac9f4aa5b05f1a392b1e Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Tue, 17 Apr 2018 15:25:20 -0400 Subject: [PATCH 1/8] Remove unused import statement in client.py Signed-off-by: Vladimir Diaz --- tuf/scripts/client.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tuf/scripts/client.py b/tuf/scripts/client.py index c02c9ec2..f9c3a281 100755 --- a/tuf/scripts/client.py +++ b/tuf/scripts/client.py @@ -70,8 +70,6 @@ import tuf.settings import tuf.log -import securesystemslib - # See 'log.py' to learn how logging is handled in TUF. logger = logging.getLogger('tuf.scripts.client') From 9cd8a6d6a390782636b8c6572d17e9f6155c4675 Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Tue, 17 Apr 2018 15:29:17 -0400 Subject: [PATCH 2/8] Resolve pylint warnings in client.py for 'redefined variable' Signed-off-by: Vladimir Diaz --- tuf/scripts/client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tuf/scripts/client.py b/tuf/scripts/client.py index f9c3a281..72e9fb37 100755 --- a/tuf/scripts/client.py +++ b/tuf/scripts/client.py @@ -223,12 +223,12 @@ def parse_arguments(): if __name__ == '__main__': # Parse the command-line arguments and set the logging level. - parsed_arguments = parse_arguments() + arguments = parse_arguments() # Perform an update of all the files in the 'targets' directory located in # the current directory. try: - update_client(parsed_arguments) + update_client(arguments) except (tuf.exceptions.NoWorkingMirrorError, tuf.exceptions.RepositoryError, tuf.exceptions.FormatError) as e: From dc9fedf9db091979ce2609f6cc54c20d9df588f9 Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Tue, 17 Apr 2018 15:46:43 -0400 Subject: [PATCH 3/8] Resolve undefined variable warnings in repo.py Signed-off-by: Vladimir Diaz --- tuf/scripts/repo.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/tuf/scripts/repo.py b/tuf/scripts/repo.py index dbc6cbdb..c63b2d25 100755 --- a/tuf/scripts/repo.py +++ b/tuf/scripts/repo.py @@ -227,7 +227,7 @@ def delegate(parsed_arguments): repository.writeall(consistent_snapshot=consistent_snapshot) # Move staged metadata directory to "live" metadata directory. - write_to_live_repo() + write_to_live_repo(parsed_arguments) @@ -271,7 +271,7 @@ def revoke(parsed_arguments): repository.writeall(consistent_snapshot=consistent_snapshot) # Move staged metadata directory to "live" metadata directory. - write_to_live_repo() + write_to_live_repo(parsed_arguments) @@ -432,7 +432,7 @@ def add_verification_key(parsed_arguments): increment_version_number=False) # Move staged metadata directory to "live" metadata directory. - write_to_live_repo() + write_to_live_repo(parsed_arguments) @@ -473,7 +473,7 @@ def remove_verification_key(parsed_arguments): increment_version_number=False) # Move staged metadata directory to "live" metadata directory. - write_to_live_repo() + write_to_live_repo(parsed_arguments) @@ -557,7 +557,7 @@ def sign_role(parsed_arguments): repository.writeall(consistent_snapshot=consistent_snapshot) # Move staged metadata directory to "live" metadata directory. - write_to_live_repo() + write_to_live_repo(parsed_arguments) @@ -572,7 +572,7 @@ def clean_repo(parsed_arguments): -def write_to_live_repo(): +def write_to_live_repo(parsed_arguments): staged_meta_directory = os.path.join( parsed_arguments.path, REPO_DIR, STAGED_METADATA_DIR) live_meta_directory = os.path.join( @@ -583,7 +583,7 @@ def write_to_live_repo(): -def add_target_to_repo(target_path, repo_targets_path, repository, custom=None): +def add_target_to_repo(parsed_arguments, target_path, repo_targets_path, repository, custom=None): """ (1) Copy 'target_path' to 'repo_targets_path'. (2) Add 'target_path' to Targets metadata of 'repository'. @@ -620,7 +620,7 @@ def add_target_to_repo(target_path, repo_targets_path, repository, custom=None): -def remove_target_files_from_metadata(repository): +def remove_target_files_from_metadata(parsed_arguments, repository): if parsed_arguments.role in ['root', 'snapshot', 'timestamp']: raise tuf.exceptions.Error( @@ -662,10 +662,10 @@ def add_targets(parsed_arguments): if os.path.isdir(target_path): for sub_target_path in repository.get_filepaths_in_directory( target_path, parsed_arguments.recursive): - add_target_to_repo(sub_target_path, repo_targets_path, repository) + add_target_to_repo(parsed_arguments, sub_target_path, repo_targets_path, repository) else: - add_target_to_repo(target_path, repo_targets_path, repository) + add_target_to_repo(parsed_arguments, target_path, repo_targets_path, repository) consistent_snapshot = tuf.roledb.get_roleinfo('root', repository._repository_name)['consistent_snapshot'] @@ -697,7 +697,7 @@ def add_targets(parsed_arguments): repository.writeall(consistent_snapshot=consistent_snapshot) # Move staged metadata directory to "live" metadata directory. - write_to_live_repo() + write_to_live_repo(parsed_arguments) @@ -710,7 +710,7 @@ def remove_targets(parsed_arguments): # Remove target files from the Targets metadata (or the role specified in # --role) that match the glob patterns specified in --remove. - remove_target_files_from_metadata(repository) + remove_target_files_from_metadata(parsed_arguments, repository) # Examples of how the --pw command-line option is interpreted: # repo.py --init': parsed_arguments.pw = 'pw' @@ -740,7 +740,7 @@ def remove_targets(parsed_arguments): repository.writeall(consistent_snapshot=consistent_snapshot) # Move staged metadata directory to "live" metadata directory. - write_to_live_repo() + write_to_live_repo(parsed_arguments) @@ -755,7 +755,7 @@ def init_repo(parsed_arguments): repository = repo_tool.create_new_repository(repo_path) if not parsed_arguments.bare: - set_top_level_keys(repository) + set_top_level_keys(repository, parsed_arguments) repository.writeall(consistent_snapshot=parsed_arguments.consistent) else: @@ -765,7 +765,7 @@ def init_repo(parsed_arguments): repository.write('snapshot', consistent_snapshot=parsed_arguments.consistent) repository.write('timestamp', consistent_snapshot=parsed_arguments.consistent) - write_to_live_repo() + write_to_live_repo(parsed_arguments) # Create the client files. The client directory contains the required # directory structure and metadata files for clients to successfully perform @@ -776,7 +776,7 @@ def init_repo(parsed_arguments): -def set_top_level_keys(repository): +def set_top_level_keys(repository, parsed_arguments): """ Generate, write, and set the top-level keys. 'repository' is modified. """ @@ -1025,7 +1025,7 @@ def parse_arguments(): if __name__ == '__main__': # Parse the arguments and set the logging level. - parsed_arguments = parse_arguments() + arguments = parse_arguments() # Create or modify the repository depending on the option specified on the # command line. For example, the following adds the 'foo.bar.gz' to the @@ -1034,7 +1034,7 @@ def parse_arguments(): # $ repo.py --add foo.bar.gz try: - process_arguments(parsed_arguments) + process_arguments(arguments) except (tuf.exceptions.Error) as e: sys.stderr.write('Error: ' + str(e) + '\n') From affc884c952d9213a6bcb2a40f863352f83002bf Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Tue, 17 Apr 2018 17:00:13 -0400 Subject: [PATCH 4/8] Fix 'tuf.exception' typo to resolve pylint warning Signed-off-by: Vladimir Diaz --- tuf/scripts/repo.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tuf/scripts/repo.py b/tuf/scripts/repo.py index c63b2d25..dc8fba25 100755 --- a/tuf/scripts/repo.py +++ b/tuf/scripts/repo.py @@ -120,7 +120,7 @@ def process_arguments(parsed_arguments): # Do we have a valid argparse Namespace? if not isinstance(parsed_arguments, argparse.Namespace): - raise tuf.exception.Error('Invalid namespace: ' + repr(parsed_arguments)) + raise tuf.exceptions.Error('Invalid namespace: ' + repr(parsed_arguments)) else: logger.debug('We have a valid argparse Namespace.') @@ -403,7 +403,7 @@ def import_publickey_from_file(keypath): def add_verification_key(parsed_arguments): if not parsed_arguments.pubkeys: - raise tuf.exception.Error('--pubkeys must be given with --trust.') + raise tuf.exceptions.Error('--pubkeys must be given with --trust.') repository = repo_tool.load_repository( os.path.join(parsed_arguments.path, REPO_DIR)) @@ -424,7 +424,7 @@ def add_verification_key(parsed_arguments): repository.timestamp.add_verification_key(imported_pubkey) else: - raise tuf.exception.Error('The given --role is not a top-level role.') + raise tuf.exceptions.Error('The given --role is not a top-level role.') consistent_snapshot = tuf.roledb.get_roleinfo('root', repository._repository_name)['consistent_snapshot'] @@ -440,7 +440,7 @@ def add_verification_key(parsed_arguments): def remove_verification_key(parsed_arguments): if not parsed_arguments.pubkeys: - raise tuf.exception.Error('--pubkeys must be given with --distrust.') + raise tuf.exceptions.Error('--pubkeys must be given with --distrust.') repository = repo_tool.load_repository( os.path.join(parsed_arguments.path, REPO_DIR)) @@ -462,7 +462,7 @@ def remove_verification_key(parsed_arguments): repository.timestamp.remove_verification_key(imported_pubkey) else: - raise tuf.exception.Error('The given --role is not a top-level role.') + raise tuf.exceptions.Error('The given --role is not a top-level role.') except securesystemslib.exceptions.Error: print(repr(keypath) + ' is not a trusted key. Skipping.') From 52519c8c3470234e08bcdf8d0f48fed213745f6a Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Wed, 18 Apr 2018 10:48:56 -0400 Subject: [PATCH 5/8] Remove unused imports Signed-off-by: Vladimir Diaz --- tuf/scripts/repo.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tuf/scripts/repo.py b/tuf/scripts/repo.py index dc8fba25..44610c65 100755 --- a/tuf/scripts/repo.py +++ b/tuf/scripts/repo.py @@ -61,8 +61,6 @@ import logging import argparse import shutil -import errno -import getpass import time import fnmatch From 33734d31fdb264ffda78764ef85bd6cb1c0993bb Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Wed, 18 Apr 2018 10:52:26 -0400 Subject: [PATCH 6/8] Remove unused variables Signed-off-by: Vladimir Diaz --- tuf/scripts/repo.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tuf/scripts/repo.py b/tuf/scripts/repo.py index 44610c65..9a86e585 100755 --- a/tuf/scripts/repo.py +++ b/tuf/scripts/repo.py @@ -700,9 +700,6 @@ def add_targets(parsed_arguments): def remove_targets(parsed_arguments): - target_paths = os.path.join(parsed_arguments.remove) - - repo_targets_path = os.path.join(parsed_arguments.path, REPO_DIR, 'targets') repository = repo_tool.load_repository( os.path.join(parsed_arguments.path, REPO_DIR)) From 0892812feb298d5cbec4720a3b881b65fa42e982 Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Wed, 18 Apr 2018 10:53:49 -0400 Subject: [PATCH 7/8] Remove unused 'e' variable Signed-off-by: Vladimir Diaz --- tuf/scripts/repo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tuf/scripts/repo.py b/tuf/scripts/repo.py index 9a86e585..ff9eafd0 100755 --- a/tuf/scripts/repo.py +++ b/tuf/scripts/repo.py @@ -357,7 +357,7 @@ def import_privatekey_from_file(keypath, password=None): key_object = securesystemslib.keys.import_rsakey_from_private_pem( encrypted_key, 'rsassa-pss-sha256', password) - except securesystemslib.exceptions.CryptoError as e: + except securesystemslib.exceptions.CryptoError: raise tuf.exceptions.Error(repr(keypath) + ' cannot be imported, possibly' ' because an invalid key file is given or the decryption password is' ' incorrect.') From 9d013407f94e689d2861873f2ec5e51b40fb0a2f Mon Sep 17 00:00:00 2001 From: Vladimir Diaz Date: Wed, 18 Apr 2018 11:04:57 -0400 Subject: [PATCH 8/8] Add _repository_name and _targets_directory to Pylint's exclude-protected Signed-off-by: Vladimir Diaz --- pylintrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pylintrc b/pylintrc index 358bd431..8f3e9f4b 100644 --- a/pylintrc +++ b/pylintrc @@ -344,7 +344,7 @@ defining-attr-methods=__init__,__new__,setUp # List of member names, which should be excluded from the protected access # warning. -exclude-protected=_asdict, _fields, _replace, _source, _make, _generate_and_write_metadata, _delete_obsolete_metadata, _log_status_of_top_level_roles, _load_top_level_metadata, _strip_version_number, _delegated_roles, _remove_invalid_and_duplicate_signatures +exclude-protected=_asdict, _fields, _replace, _source, _make, _generate_and_write_metadata, _delete_obsolete_metadata, _log_status_of_top_level_roles, _load_top_level_metadata, _strip_version_number, _delegated_roles, _remove_invalid_and_duplicate_signatures, _repository_name, _targets_directory # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls