Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transition to the newest version of TUF #561

Open
wants to merge 95 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
60b8fa9
Update tuf, securesystemslib and cryptography deps
lukpueh Aug 23, 2024
f62907e
Add alternative TUF metadata repo implementation
lukpueh Aug 23, 2024
ad2b58f
Change create and add_keys API to take signers
lukpueh Aug 26, 2024
b46645b
Make sure targets is signed on add key
lukpueh Aug 26, 2024
33750eb
Assert keytype rsa in taf.tuf.keys helper
lukpueh Aug 27, 2024
42fbfac
Add signer implementation for Yubikeys
lukpueh Aug 28, 2024
25371d7
Comment out legacy imports (WIP)
lukpueh Aug 28, 2024
ec294a8
Merge branch 'feature/tuf-repositoty' into tuf-upgrade
renatav Oct 29, 2024
70927b7
Merge pull request #512 from lukpueh/tuf-upgrade
renatav Oct 29, 2024
9bf3fb9
feat: moved get threshold to the new repository class, implement dele…
renatav Oct 29, 2024
c7be3cb
refact: move get expiration date, get all targets and check expiratio…
renatav Oct 30, 2024
7601b9b
refact: move get role paths and all target files to the new repositor…
renatav Oct 30, 2024
b8d247e
refact: work on making the create repository method more flexible
renatav Oct 31, 2024
ade9af1
refact: extend creation of repositories using the new TUF, added supp…
renatav Oct 31, 2024
f1c1b6c
test: add create repository with delegations test
renatav Nov 1, 2024
ea05769
test: use repository created using create in tests
renatav Nov 1, 2024
c9857d0
test, refact: reorganize tests, implement keyid-roles mapping using t…
renatav Nov 1, 2024
b7eb34a
test: re-enabled add target test
renatav Nov 2, 2024
ccb94b8
refact: moved modify targets to the new repository class
renatav Nov 4, 2024
43af588
test: create test repos with target files and custom data
renatav Nov 5, 2024
feb7b53
refac, test: move get_all_target_files_state to the new repository cl…
renatav Nov 5, 2024
3202900
refact: move generate_roles_description to the new repository class
renatav Nov 5, 2024
af59138
test, refact: minor tests refactoring, reimplement is_valid_metadata_key
renatav Nov 6, 2024
51d63c9
refact: test: reimplement add metadata keys, enable keys tests
renatav Nov 6, 2024
e57b8e3
feat, test: implement revoke key
renatav Nov 7, 2024
abeaa2c
test, fix: minor add and revoke key improvements
renatav Nov 7, 2024
f3bc1f7
refact, test: initial work on reworking signing, add set expiration d…
renatav Nov 8, 2024
2681d4a
refact: remeve outdated imports
renatav Nov 8, 2024
0d67dd5
refact: check and set expiration date reimplemented
renatav Nov 8, 2024
ba7d3eb
refact: update key generation
renatav Nov 8, 2024
ea93127
refact: reimplement repository_at_revision
renatav Nov 9, 2024
4122100
refact: update updater and the creation of a new repository
renatav Nov 9, 2024
e21edfd
fix: bare repositories fix
renatav Nov 9, 2024
d9e5cc0
refact: reimplement addition of verification keys when creating a new…
renatav Nov 11, 2024
67fbc2b
fix: minor create repo fix
renatav Nov 11, 2024
c1cd853
refact: remove do_snapshot and timestamp from add/revoke keys
renatav Nov 11, 2024
7fe4d2f
refact: work on initializing repository and signers in api
renatav Nov 14, 2024
e77210b
fix, feat: fix add keys, add revoke key command
renatav Nov 14, 2024
947f1e4
test: add add delegated paths test
renatav Nov 14, 2024
5c56ede
refact: rework create new role
renatav Nov 15, 2024
c92c39b
refact: support adding multiple new roles
renatav Nov 15, 2024
f63a058
refact, fix: fix create delagations when no previouis delgations, rew…
renatav Nov 15, 2024
66a2742
refact: refactored remove paths
renatav Nov 16, 2024
2fe6d72
fix: minor fixes, update update-expiration-dates
renatav Nov 16, 2024
5ddb0c3
refact, test: remove unused code, remove paths test added
renatav Nov 16, 2024
dfbcde6
refact: rework targets update
renatav Nov 16, 2024
c541df8
test: add update targets roles test
renatav Nov 18, 2024
45c8c02
refact: reimplement add target repo
renatav Nov 19, 2024
4917b71
refact: rework remove target repo
renatav Nov 19, 2024
2f817d3
refact: update add/remove dependencies
renatav Nov 19, 2024
de7f5f8
test, refact: refact repository init tests, remove outdated tests
renatav Nov 19, 2024
96c7df1
test: work on refactoring test_create_repository tests
renatav Nov 20, 2024
7a787f4
test, refact: reorganize conftest
renatav Nov 20, 2024
1b7146b
test: rework test dependencies, metadata and roles api tests
renatav Nov 21, 2024
c5de6e1
chore: remove ramaining test repos
renatav Nov 21, 2024
739c014
test: refact test targets
renatav Nov 21, 2024
4fd29db
test, refact: update repositoriesdb tests, some refactoring, remove u…
renatav Nov 21, 2024
fbc0a8a
fix: fix snapshot info length/hash issue
renatav Nov 22, 2024
68fb96e
feat: initial implementation of git storage backed, which can load me…
renatav Nov 22, 2024
84a52f2
fix: bypass storage singleton
renatav Nov 22, 2024
8224179
fix: update root version number when updating snaphost. Work on updat…
renatav Nov 25, 2024
5afeaf5
test: update test_update_invalid
renatav Nov 26, 2024
6573a6a
fix: fix update expiration dates. Snapshot info was not getting updated
renatav Nov 27, 2024
959ab49
test: update remaining updater tests, minor cleanup
renatav Nov 27, 2024
16abe0c
chore: cleanup, formatting, remove unused code and imports
renatav Nov 27, 2024
4f02ce1
chore: bump yubikey-manager version
renatav Nov 27, 2024
62a8cac
chore: fixing mypy issues
renatav Nov 27, 2024
cb5b45a
chore: import and mypy issues
renatav Nov 27, 2024
2070426
chore: mypy issues
renatav Nov 27, 2024
106836c
chore: remove unused import
renatav Nov 27, 2024
896eb73
chore: comment out yubukey tests
renatav Nov 27, 2024
f262d81
test: remove generation of tests
renatav Nov 27, 2024
324e642
chore: formatting
renatav Nov 27, 2024
ea6dbf2
test: fix a number of failing tests
renatav Nov 28, 2024
32b2930
chore: remove unused import
renatav Nov 28, 2024
b37a631
test: rework keys tests
renatav Nov 28, 2024
d3d7263
test: update number of root keys in updater keys description
renatav Nov 29, 2024
3000095
fix: fix failing tests
renatav Nov 29, 2024
65c128b
refact: update yubikey cli functions
renatav Nov 29, 2024
4805128
test: refact yubikey tests
renatav Nov 30, 2024
789b591
refact: refactor creation of repositories using yubikeys
renatav Nov 30, 2024
ff146df
chore: formatting and mypy fixes
renatav Nov 30, 2024
e402196
test: add pytest-mock to test requirements
renatav Nov 30, 2024
de1bd82
Merge branch 'master' into feature/tuf-repositoty
renatav Nov 30, 2024
da5344d
chore: update changelog
renatav Nov 30, 2024
2f16959
chore: merge master
renatav Nov 30, 2024
f22da80
test: tun tests without having ykman installed
renatav Dec 4, 2024
7db3588
chore: ignore unused import
renatav Dec 4, 2024
6410f52
docs: GitStorageBackend docstring
renatav Dec 4, 2024
4ab8c48
feat: add a command for rotating keys
renatav Dec 9, 2024
dc431c5
test: add test revoke signing key test
renatav Dec 9, 2024
5ea21e7
docs: update docs related to repository classes
renatav Dec 10, 2024
bef7f8e
chore: merge master and resolve conflicts
renatav Dec 13, 2024
4490e9b
docs: add/update a number of metadata repository docstrings
renatav Dec 19, 2024
81e0799
docs: add docstrings to metadata repository
renatav Dec 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions taf/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import datetime
from typing import List, Optional

# TODO: Remove legacy imports
from tuf.repository_tool import TARGETS_DIRECTORY_NAME

TARGETS_DIRECTORY_NAME = "targets"

Expand Down
53 changes: 26 additions & 27 deletions taf/log.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
import securesystemslib
from pathlib import Path

import tuf.log
import tuf.repository_tool
import tuf.exceptions
# import tuf.log
# import tuf.exceptions
from loguru import logger as taf_logger
import taf.settings as settings

Expand Down Expand Up @@ -46,7 +45,7 @@ def formatter(record):
def disable_console_logging():
try:
taf_logger.remove(console_loggers["log"])
disable_tuf_console_logging()
# disable_tuf_console_logging()
except ValueError:
# will be raised if this is called twice
pass
Expand All @@ -55,26 +54,26 @@ def disable_console_logging():
def disable_file_logging():
try:
taf_logger.remove(file_loggers["log"])
disable_tuf_console_logging()
# disable_tuf_console_logging()
except ValueError:
# will be raised if this is called twice
pass


def disable_tuf_console_logging():
try:
tuf.log.set_console_log_level(logging.CRITICAL)
except securesystemslib.exceptions.Error:
pass
# def disable_tuf_console_logging():
# try:
# tuf.log.set_console_log_level(logging.CRITICAL)
# except securesystemslib.exceptions.Error:
# pass


def disable_tuf_file_logging():
if tuf.log.file_handler is not None:
tuf.log.disable_file_logging()
else:
logging.getLogger("tuf").setLevel(logging.CRITICAL)
logging.getLogger("securesystemslib_keys").setLevel(logging.CRITICAL)
logging.getLogger("securesystemslib_util").setLevel(logging.CRITICAL)
# def disable_tuf_file_logging():
# if tuf.log.file_handler is not None:
# tuf.log.disable_file_logging()
# else:
# logging.getLogger("tuf").setLevel(logging.CRITICAL)
# logging.getLogger("securesystemslib_keys").setLevel(logging.CRITICAL)
# logging.getLogger("securesystemslib_util").setLevel(logging.CRITICAL)


def _get_log_location():
Expand All @@ -93,10 +92,10 @@ def initialize_logger_handlers():
console_loggers["log"] = taf_logger.add(
sys.stdout, format=formatter, level=VERBOSITY_LEVELS[settings.VERBOSITY]
)
tuf.log.set_console_log_level(logging.ERROR)
else:
# tuf.log.set_console_log_level(logging.ERROR)
# else:
# if console logging is disable, remove tuf console logger
disable_tuf_console_logging()
# disable_tuf_console_logging()

if settings.ENABLE_FILE_LOGGING:
log_location = _get_log_location()
Expand All @@ -112,13 +111,13 @@ def initialize_logger_handlers():
format=_FILE_FORMAT_STRING,
level=settings.ERROR_LOGGING_LEVEL,
)
try:
tuf.log.set_filehandler_log_level(settings.FILE_LOGGING_LEVEL)
except tuf.exceptions.Error:
pass
else:
# if file logging is disabled, also disable tuf file logging
disable_tuf_file_logging()
# try:
# tuf.log.set_filehandler_log_level(settings.FILE_LOGGING_LEVEL)
# except tuf.exceptions.Error:
# pass
# else:
# # if file logging is disabled, also disable tuf file logging
# disable_tuf_file_logging()


initialize_logger_handlers()
100 changes: 1 addition & 99 deletions taf/repository_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
on_rm_error,
get_file_details,
)

from taf import YubikeyMissingLibrary
try:
import taf.yubikey as yk
except ImportError:
Expand Down Expand Up @@ -560,28 +560,7 @@ def get_target_file_hashes(self, target_path, hash_func=HASH_FUNCTION):

return hashes.get(hash_func, hashes)

def get_role_from_target_paths(self, target_paths):
"""
Find a common role that can be used to sign given target paths.

NOTE: Currently each target has only one mapped role.
"""
targets_roles = self.map_signing_roles(target_paths)
roles = list(targets_roles.values())

try:
# all target files should have at least one common role
common_role = reduce(
set.intersection,
[set([r]) if isinstance(r, str) else set(r) for r in roles],
)
except TypeError:
return None

if not common_role:
return None

return common_role.pop()


def _collect_target_paths_of_role(self, target_roles_paths):
Expand Down Expand Up @@ -631,49 +610,7 @@ def delete_unregistered_target_files(self, targets_role="targets"):
(self.targets_path / file_rel_path).unlink()


def find_keys_roles(self, public_keys, check_threshold=True):
"""Find all roles that can be signed by the provided keys.
A role can be signed by the list of keys if at least the number
of keys that can sign that file is equal to or greater than the role's
threshold
"""

def _map_keys_to_roles(role_name, key_ids):
keys_roles = []
delegations = self.get_delegations_info(role_name)
if len(delegations):
for role_info in delegations.get("roles"):
# check if this role can sign target_path
delegated_role_name = role_info["name"]
delegated_roles_keyids = role_info["keyids"]
delegated_roles_threshold = role_info["threshold"]
num_of_signing_keys = len(
set(delegated_roles_keyids).intersection(key_ids)
)
if (
not check_threshold
or num_of_signing_keys >= delegated_roles_threshold
):
keys_roles.append(delegated_role_name)
keys_roles.extend(_map_keys_to_roles(delegated_role_name, key_ids))
return keys_roles

keyids = [key["keyid"] for key in public_keys]
return _map_keys_to_roles("targets", keyids)

def find_associated_roles_of_key(self, public_key):
"""
Find all roles whose metadata files can be signed by this key
Threshold is not important, as long as the key is one of the signing keys
"""
roles = []
key_id = public_key["keyid"]
for role in MAIN_ROLES:
key_ids = self.get_role_keys(role)
if key_id in key_ids:
roles.append(role)
roles.extend(self.find_keys_roles([public_key], check_threshold=False))
return roles

def get_key_length_and_scheme_from_metadata(self, parent_role, keyid):
try:
Expand Down Expand Up @@ -901,41 +838,6 @@ def is_valid_metadata_yubikey(self, role, public_key=None):

return self.is_valid_metadata_key(role, public_key)

def map_signing_roles(self, target_filenames):
"""
For each target file, find delegated role responsible for that target file based
on the delegated paths. The most specific role (meaning most deeply nested) whose
delegation path matches the target's path is returned as that file's matching role.
If there are no delegated roles with a path that matches the target file's path,
'targets' role will be returned as that file's matching role. Delegation path
is expected to be relative to the targets directory. It can be defined as a glob
pattern.
"""

def _map_targets_to_roles(role_name, target_filenames):
roles_targets = {}
delegations = self.get_delegations_info(role_name)
if len(delegations):
for role_info in delegations.get("roles"):
# check if this role can sign target_path
delegated_role_name = role_info["name"]
for path_pattern in role_info["paths"]:
for target_filename in target_filenames:
if fnmatch(
target_filename.lstrip(os.sep),
path_pattern.lstrip(os.sep),
):
roles_targets[target_filename] = delegated_role_name
roles_targets.update(
_map_targets_to_roles(delegated_role_name, target_filenames)
)
return roles_targets

roles_targets = {
target_filename: "targets" for target_filename in target_filenames
}
roles_targets.update(_map_targets_to_roles("targets", target_filenames))
return roles_targets

def remove_metadata_key(self, role, key_id):
"""Remove metadata key of the provided role.
Expand Down
62 changes: 37 additions & 25 deletions taf/tests/data/keystores/keystore/root1
Original file line number Diff line number Diff line change
@@ -1,27 +1,39 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
16 changes: 9 additions & 7 deletions taf/tests/data/keystores/keystore/root1.pub
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5EGVh9xqVFFHnGGIofks
cA3vHWFs1QP60QTX+ZJUPiUJdDb8wuJ6mu9d8bKojE3SEVHCLpJeV4+muMnLtZWq
AipiuFUU9QDpOYaqQ5SD5n/9sZfiWDzjVsqZA4WMj0OCd/Bkn+umz3ljHFe0EJUE
CxYRvmArC05UyJej7fCaQ/cD7QELrpmBaE2qLcG0Vfirz9NekaXixGiKNiIjHAj6
YwIfES9SycVo42LEOskGFciqgfZJVtSaTIurW+KnOToStazEWY8okon91s+5ltIN
OS68TtBLtph5PXcLhqSozE8SqMW3gZni6zXHHQtuouFLdGkgw+0V2YLX15Ka78zj
hQIDAQAB
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwnsabFAhR4VSc+5r+lZb
KPlcO/gUmae1EzY5b/oLI4HlFCdKWSjr/963baN/kTKMVCaNBNjhIpkz6qp03pJC
PRQ5gECB1WoYHxNhpTec67IOpSnC6q5wR9FcxjlydRlbk84sMmnRqHrpBsVj6d6U
x+HiGF64HQI3hybGWsyYKs9TC+MaVJM9tYoItHua0OretgwXkIdV9Zdn+7S4NVYG
U67wJvGeiRQ1IKttYC0+djzUcVlZGkmPNzMIpzctcB/J5oBPRDVMoxWV7rxQqx1v
oS5xY7iM2XcnqH0Jwrt0r+zA0BTvLEZzhvtCw2aj2GUYHd7L5bmZcCwY9t2vGKgV
enRmQ3JnjGBBcbMc7M2heP0NUk5TMSD+knA5lNHuufb2oN+i/fOvWhFA+kTOg3jj
3I3MgwpoXTsYtKHerbe9KNxTL9quPPdjwGjtaJuEnrxxkvz1ZxDJbemBuYjBqasY
bLWfHn+XWmpzPd1qKLwawCpvV2bgNhRqAV7GbASCCBtVAgMBAAE=
-----END PUBLIC KEY-----
62 changes: 37 additions & 25 deletions taf/tests/data/keystores/keystore/root2
Original file line number Diff line number Diff line change
@@ -1,27 +1,39 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
Loading
Loading