2024-04-15 15:20:56 -05:00
|
|
|
package mirror
|
|
|
|
|
|
|
|
|
|
import (
|
2024-09-09 14:22:17 +01:00
|
|
|
"context"
|
2024-04-15 15:20:56 -05:00
|
|
|
"fmt"
|
|
|
|
|
|
2024-09-02 16:17:50 +01:00
|
|
|
"github.com/docker/attest/tuf"
|
2024-04-15 15:20:56 -05:00
|
|
|
)
|
|
|
|
|
|
2024-09-09 14:22:17 +01:00
|
|
|
func NewTUFMirror(ctx context.Context, root []byte, tufPath, metadataURL, targetsURL string, versionChecker tuf.VersionChecker) (*TUFMirror, error) {
|
2024-04-15 15:20:56 -05:00
|
|
|
if root == nil {
|
2024-08-23 09:33:30 +01:00
|
|
|
root = tuf.DockerTUFRootDefault.Data
|
2024-04-15 15:20:56 -05:00
|
|
|
}
|
2024-09-09 14:22:17 +01:00
|
|
|
tufClient, err := tuf.NewClient(ctx, &tuf.ClientOptions{InitialRoot: root, Path: tufPath, MetadataSource: metadataURL, TargetsSource: targetsURL, VersionChecker: versionChecker})
|
2024-04-15 15:20:56 -05:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("failed to create TUF client: %w", err)
|
|
|
|
|
}
|
2024-08-01 15:35:15 +01:00
|
|
|
return &TUFMirror{TUFClient: tufClient, tufPath: tufPath, metadataURL: metadataURL, targetsURL: targetsURL}, nil
|
2024-04-15 15:20:56 -05:00
|
|
|
}
|