35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
""" 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/<apirepopath: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
|
|
}
|
|
|