46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package tuf_test
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/docker/attest/internal/embed"
|
|
"github.com/docker/attest/pkg/tuf"
|
|
"github.com/theupdateframework/go-tuf/v2/metadata"
|
|
)
|
|
|
|
func ExampleNewTufClient_registry() {
|
|
// 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.RootStaging.Data, 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)
|
|
}
|
|
}
|
|
}
|