2024-05-02 13:42:35 -05:00
|
|
|
package tuf_test
|
2024-05-02 13:35:57 -05:00
|
|
|
|
|
|
|
|
import (
|
2024-09-09 14:22:17 +01:00
|
|
|
"context"
|
2024-05-02 13:35:57 -05:00
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
|
2024-09-02 16:17:50 +01:00
|
|
|
"github.com/docker/attest/tuf"
|
2024-05-02 13:35:57 -05:00
|
|
|
"github.com/theupdateframework/go-tuf/v2/metadata"
|
|
|
|
|
)
|
|
|
|
|
|
2024-08-01 15:35:15 +01:00
|
|
|
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
|
2024-05-02 15:57:11 -05:00
|
|
|
metadataURI := "registry-1.docker.io/docker/tuf-metadata:latest"
|
|
|
|
|
targetsURI := "registry-1.docker.io/docker/tuf-targets"
|
2024-05-22 17:02:25 +01:00
|
|
|
|
2024-09-09 14:22:17 +01:00
|
|
|
registryClient, err := tuf.NewClient(context.Background(), &tuf.ClientOptions{tuf.DockerTUFRootStaging.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()
|
|
|
|
|
|
|
|
|
|
// top-level target files
|
|
|
|
|
targets := trustedMetadata.Targets[metadata.TARGETS].Signed.Targets
|
|
|
|
|
|
|
|
|
|
for _, t := range targets {
|
|
|
|
|
// download target files
|
2024-08-14 09:16:24 -05:00
|
|
|
_, err := registryClient.DownloadTarget(t.Path, filepath.Join(tufOutputPath, "download"))
|
2024-05-02 13:35:57 -05:00
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|