""" List and manage repository signing information """ import logging import features from app import tuf_metadata_api from data import model from endpoints.api import (require_repo_read, path_param, RepositoryParamResource, resource, nickname, show_if, disallow_for_app_repositories, NotFound) logger = logging.getLogger(__name__) @show_if(features.SIGNING) @resource('/v1/repository//signatures') @path_param('repository', 'The full path of the repository. e.g. namespace/name') class RepositorySignatures(RepositoryParamResource): """ Operations for managing the signatures in a repository image. """ @require_repo_read @nickname('getRepoSignatures') @disallow_for_app_repositories def get(self, namespace, repository): """ Fetches the list of signed tags for the repository. """ repo = model.repository.get_repository(namespace, repository) if repo is None or not repo.trust_enabled: raise NotFound() tag_data, expiration = tuf_metadata_api.get_default_tags_with_expiration(namespace, repository) return { 'tags': tag_data, 'expiration': expiration }