mirror of
https://github.com/hauler-dev/hauler.git
synced 2026-05-20 08:04:15 +00:00
* pull back in ocil * updates to OCIL funcs to handle cosign changes * add cosign logic * adjust Makefile to be a little more generic * cli updates to accomodate the cosign additions * add cosign drop-in funcs * impl for cosign functions for images & store copy * fixes and logging for cosign verify <iamge> * fix cosign verify logging * update go.mod Signed-off-by: Adam Martin <adam.martin@rancherfederal.com>
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package image
|
|
|
|
import (
|
|
"github.com/google/go-containerregistry/pkg/authn"
|
|
gname "github.com/google/go-containerregistry/pkg/name"
|
|
gv1 "github.com/google/go-containerregistry/pkg/v1"
|
|
"github.com/google/go-containerregistry/pkg/v1/remote"
|
|
|
|
"github.com/rancherfederal/hauler/pkg/artifacts"
|
|
)
|
|
|
|
var _ artifacts.OCI = (*Image)(nil)
|
|
|
|
func (i *Image) MediaType() string {
|
|
mt, err := i.Image.MediaType()
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return string(mt)
|
|
}
|
|
|
|
func (i *Image) RawConfig() ([]byte, error) {
|
|
return i.RawConfigFile()
|
|
}
|
|
|
|
// Image implements the OCI interface for Image API objects. API spec information
|
|
// is stored into the Name field.
|
|
type Image struct {
|
|
Name string
|
|
gv1.Image
|
|
}
|
|
|
|
func NewImage(name string, opts ...remote.Option) (*Image, error) {
|
|
r, err := gname.ParseReference(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
defaultOpts := []remote.Option{
|
|
remote.WithAuthFromKeychain(authn.DefaultKeychain),
|
|
}
|
|
opts = append(opts, defaultOpts...)
|
|
|
|
img, err := remote.Image(r, opts...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &Image{
|
|
Name: name,
|
|
Image: img,
|
|
}, nil
|
|
}
|