Skip to content

Commit b60b9f3

Browse files
committed
Allow copy and describe of SBOM, attestations and signatures from cosign
Rename flags to `cosign-artifacts` Change logic to allow the retrieval of SBOM and attestations as well as signatures for these images Signed-off-by: Joao Pereira <[email protected]>
1 parent 5281971 commit b60b9f3

27 files changed

+1325
-604
lines changed

.github/workflows/gh-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
export GOPATH=$(echo `pwd`)
5151
export PATH="$GOPATH/bin:$PATH"
5252
53-
go install github.com/sigstore/cosign/cmd/cosign@v0.5.0
53+
go install github.com/sigstore/cosign/cmd/cosign@v1.7.2
5454
5555
alias cosign=cosign.exe
5656
'

hack/test-e2e.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ then
1010
GO=richgo
1111
fi
1212

13-
go install github.com/sigstore/cosign/cmd/cosign@v0.5.0
13+
go install github.com/sigstore/cosign/cmd/cosign@v1.7.2
1414

1515
mkdir -p tmp
1616
pushd ./tmp
17+
rm -f cosign.key cosign.pub
1718
COSIGN_PASSWORD= cosign generate-key-pair
1819
popd
1920

pkg/imgpkg/artifacts/artifactsfakes/fake_finder.go

Lines changed: 276 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
// Copyright 2020 VMware, Inc.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package signature
4+
package artifacts
55

66
import (
7-
"fmt"
87
"net/http"
98

109
regname "github.com/google/go-containerregistry/pkg/name"
1110
regv1 "github.com/google/go-containerregistry/pkg/v1"
1211
"github.com/google/go-containerregistry/pkg/v1/remote/transport"
12+
"github.com/vmware-tanzu/carvel-imgpkg/pkg/imgpkg/artifacts/cosign"
1313
"github.com/vmware-tanzu/carvel-imgpkg/pkg/imgpkg/imageset"
14-
"github.com/vmware-tanzu/carvel-imgpkg/pkg/imgpkg/signature/cosign"
1514
)
1615

1716
// DigestReader Interface that knows how to read a Digest from a registry
@@ -31,11 +30,35 @@ func NewCosign(reg DigestReader) *Cosign {
3130

3231
// Signature retrieves the Image information that contains the signature for the provided Image
3332
func (c Cosign) Signature(imageRef regname.Digest) (imageset.UnprocessedImageRef, error) {
34-
sigTagRef, err := c.signatureTag(imageRef)
33+
sigTagRef, err := cosign.SignatureTag(imageRef)
3534
if err != nil {
3635
return imageset.UnprocessedImageRef{}, err
3736
}
3837

38+
return c.findArtifact(imageRef, err, sigTagRef)
39+
}
40+
41+
// SBOM retrieves the Image information that contains the signature for the provided Image
42+
func (c Cosign) SBOM(imageRef regname.Digest) (imageset.UnprocessedImageRef, error) {
43+
sigTagRef, err := cosign.SBOMTag(imageRef)
44+
if err != nil {
45+
return imageset.UnprocessedImageRef{}, err
46+
}
47+
48+
return c.findArtifact(imageRef, err, sigTagRef)
49+
}
50+
51+
// Attestation retrieves the Image information that contains the signature for the provided Image
52+
func (c Cosign) Attestation(imageRef regname.Digest) (imageset.UnprocessedImageRef, error) {
53+
sigTagRef, err := cosign.AttestationTag(imageRef)
54+
if err != nil {
55+
return imageset.UnprocessedImageRef{}, err
56+
}
57+
58+
return c.findArtifact(imageRef, err, sigTagRef)
59+
}
60+
61+
func (c Cosign) findArtifact(imageRef regname.Digest, err error, sigTagRef regname.Tag) (imageset.UnprocessedImageRef, error) {
3962
sigDigest, err := c.registry.Digest(sigTagRef)
4063
if err != nil {
4164
if transportErr, ok := err.(*transport.Error); ok {
@@ -54,11 +77,3 @@ func (c Cosign) Signature(imageRef regname.Digest) (imageset.UnprocessedImageRef
5477
Tag: sigTagRef.TagStr(),
5578
}, nil
5679
}
57-
58-
func (c Cosign) signatureTag(reference regname.Digest) (regname.Tag, error) {
59-
digest, err := regv1.NewHash(reference.DigestStr())
60-
if err != nil {
61-
return regname.Tag{}, fmt.Errorf("Converting to hash: %s", err)
62-
}
63-
return regname.NewTag(reference.Repository.Name() + ":" + cosign.Munge(regv1.Descriptor{Digest: digest}))
64-
}

0 commit comments

Comments
 (0)