Documentation
¶
Index ¶
- Variables
- type Mapping
- type MultiRepoClient
- func (client *MultiRepoClient) DownloadTarget(repos []string, targetFile *metadata.TargetFiles, ...) (string, []byte, error)
- func (client *MultiRepoClient) GetTargetInfo(targetPath string) (*metadata.TargetFiles, []string, error)
- func (client *MultiRepoClient) GetTopLevelTargets() (map[string]*metadata.TargetFiles, error)
- func (client *MultiRepoClient) Refresh() error
- type MultiRepoConfig
- type MultiRepoMapType
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidRepoName = errors.New("invalid repository name")
ErrInvalidRepoName is returned when a repository name contains path traversal components or is otherwise invalid for use as a directory name.
Functions ¶
This section is empty.
Types ¶
type Mapping ¶
type Mapping struct {
Paths []string `json:"paths"`
Repositories []string `json:"repositories"`
Threshold int `json:"threshold"`
Terminating bool `json:"terminating"`
}
The following represent the map file described in TAP 4
type MultiRepoClient ¶
type MultiRepoClient struct {
TUFClients map[string]*updater.Updater
Config *MultiRepoConfig
}
MultiRepoClient represents a multi-repository TUF client.
Thread Safety: MultiRepoClient is NOT safe for concurrent use. If multiple goroutines need to use a MultiRepoClient concurrently, external synchronization is required (e.g., a sync.Mutex). Alternatively, create separate MultiRepoClient instances for each goroutine.
func New ¶
func New(config *MultiRepoConfig) (*MultiRepoClient, error)
New returns a multi-repository TUF client. All repositories described in the provided map file are initialized too
func (*MultiRepoClient) DownloadTarget ¶
func (client *MultiRepoClient) DownloadTarget(repos []string, targetFile *metadata.TargetFiles, filePath, targetBaseURL string) (string, []byte, error)
DownloadTarget downloads the target file specified by targetFile
func (*MultiRepoClient) GetTargetInfo ¶
func (client *MultiRepoClient) GetTargetInfo(targetPath string) (*metadata.TargetFiles, []string, error)
GetTargetInfo returns metadata.TargetFiles instance with information for targetPath and a list of repositories that serve the matching target. It implements the TAP 4 search algorithm.
func (*MultiRepoClient) GetTopLevelTargets ¶
func (client *MultiRepoClient) GetTopLevelTargets() (map[string]*metadata.TargetFiles, error)
GetTopLevelTargets returns the top-level target files for all repositories
func (*MultiRepoClient) Refresh ¶
func (client *MultiRepoClient) Refresh() error
Refresh refreshes all repository clients
type MultiRepoConfig ¶
type MultiRepoConfig struct {
RepoMap *MultiRepoMapType
TrustedRoots map[string][]byte
LocalMetadataDir string
LocalTargetsDir string
DisableLocalCache bool
}
MultiRepoConfig represents the configuration for a set of trusted TUF clients
func NewConfig ¶
func NewConfig(repoMap []byte, roots map[string][]byte) (*MultiRepoConfig, error)
NewConfig returns configuration for a multi-repo TUF client
func (*MultiRepoConfig) EnsurePathsExist ¶
func (cfg *MultiRepoConfig) EnsurePathsExist() error