Files
attest/pkg/tuf/example_registry_test.go

46 lines
1.1 KiB
Go
Raw Normal View History

2024-05-02 13:42:35 -05:00
package tuf_test
2024-05-02 13:35:57 -05:00
import (
"os"
"path/filepath"
"github.com/docker/attest/internal/embed"
2024-05-02 13:42:35 -05:00
"github.com/docker/attest/pkg/tuf"
2024-05-02 13:35:57 -05:00
"github.com/theupdateframework/go-tuf/v2/metadata"
)
func ExampleNewClient_registry() {
2024-05-02 13:35:57 -05:00
// 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.NewClient(embed.RootStaging.Data, tufOutputPath, metadataURI, targetsURI, tuf.NewMockVersionChecker())
2024-05-02 13:35:57 -05:00
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)
}
}
}