Documentation
¶
Index ¶
- Constants
- Variables
- func NewMockTufClient(srcPath string, dstPath string) *mockTufClient
- func NewMockVersionChecker() *mockVersionChecker
- func NewVersionChecker() *versionChecker
- type ImageCache
- type InvalidVersionError
- type Layer
- type Layers
- type RegistryFetcher
- type TUFClient
- type TufClient
- func (t *TufClient) DownloadTarget(target string, filePath string) (actualFilePath string, data []byte, err error)
- func (t *TufClient) GetMetadata() trustedmetadata.TrustedMetadata
- func (t *TufClient) GetPriorRoots(metadataURL string) (map[string][]byte, error)
- func (t *TufClient) LoadDelegatedTargets(roleName, parentName string) (*metadata.Metadata[metadata.TargetsType], error)
- func (t *TufClient) MaxRootLength() int64
- func (t *TufClient) SetRemoteTargetsURL(url string)
- type TufRole
- type TufSource
- type VersionChecker
Examples ¶
Constants ¶
View Source
const ThisModulePath = "github.com/docker/attest"
View Source
const (
TufFileNameAnnotation = "tuf.io/filename"
)
Variables ¶
Functions ¶
func NewMockTufClient ¶
func NewMockVersionChecker ¶ added in v0.1.4
func NewMockVersionChecker() *mockVersionChecker
func NewVersionChecker ¶ added in v0.1.4
func NewVersionChecker() *versionChecker
Types ¶
type ImageCache ¶
type ImageCache struct {
// contains filtered or unexported fields
}
func NewImageCache ¶
func NewImageCache() *ImageCache
type InvalidVersionError ¶ added in v0.1.4
func (*InvalidVersionError) Error ¶ added in v0.1.4
func (e *InvalidVersionError) Error() string
type RegistryFetcher ¶
type RegistryFetcher struct {
// contains filtered or unexported fields
}
RegistryFetcher implements Fetcher
func NewRegistryFetcher ¶
func NewRegistryFetcher(metadataRepo, metadataTag, targetsRepo string) *RegistryFetcher
func (*RegistryFetcher) DownloadFile ¶
func (d *RegistryFetcher) DownloadFile(urlPath string, maxLength int64, timeout time.Duration) ([]byte, error)
DownloadFile downloads a file from an OCI registry, errors out if it failed, its length is larger than maxLength or the timeout is reached.
type TufClient ¶
type TufClient struct {
// contains filtered or unexported fields
}
func NewTufClient ¶
func NewTufClient(initialRoot []byte, tufPath, metadataSource, targetsSource string, versionChecker VersionChecker) (*TufClient, error)
NewTufClient creates a new TUF client
Example (Registry) ¶
package main
import (
"os"
"path/filepath"
"github.com/docker/attest/internal/embed"
"github.com/docker/attest/pkg/tuf"
"github.com/theupdateframework/go-tuf/v2/metadata"
)
func main() {
// create a tuf client
home, err := os.UserHomeDir()
if err != nil {
panic(err)
}
tufOutputPath := filepath.Join(home, ".docker", "tuf")
// using oci tuf metadata and targets
metadataURI := "registry-1.docker.io/docker/tuf-metadata:latest"
targetsURI := "registry-1.docker.io/docker/tuf-targets"
registryClient, err := tuf.NewTufClient(embed.StagingRoot, tufOutputPath, metadataURI, targetsURI, tuf.NewMockVersionChecker())
if err != nil {
panic(err)
}
// get trusted tuf metadata
trustedMetadata := registryClient.GetMetadata()
if err != nil {
panic(err)
}
// top-level target files
targets := trustedMetadata.Targets[metadata.TARGETS].Signed.Targets
for _, t := range targets {
// download target files
_, _, err := registryClient.DownloadTarget(t.Path, filepath.Join(tufOutputPath, "download"))
if err != nil {
panic(err)
}
}
}
func (*TufClient) DownloadTarget ¶
func (t *TufClient) DownloadTarget(target string, filePath string) (actualFilePath string, data []byte, err error)
DownloadTarget downloads the target file using Updater. The Updater gets the target information, verifies if the target is already cached, and if it is not cached, downloads the target file.
func (*TufClient) GetMetadata ¶
func (t *TufClient) GetMetadata() trustedmetadata.TrustedMetadata
func (*TufClient) GetPriorRoots ¶
func (*TufClient) LoadDelegatedTargets ¶
func (t *TufClient) LoadDelegatedTargets(roleName, parentName string) (*metadata.Metadata[metadata.TargetsType], error)
Derived from updater.loadTargets() in theupdateframework/go-tuf
func (*TufClient) MaxRootLength ¶
func (*TufClient) SetRemoteTargetsURL ¶
type VersionChecker ¶ added in v0.1.4
Click to show internal directories.
Click to hide internal directories.