diff --git a/pkg/attest/sign_test.go b/pkg/attest/sign_test.go index 4fa494b..04d2eb9 100644 --- a/pkg/attest/sign_test.go +++ b/pkg/attest/sign_test.go @@ -191,11 +191,21 @@ func TestSimpleStatementSigning(t *testing.T) { err = manifest.AddAttestation(ctx, signer, statement2, opts) require.NoError(t, err) + // fake that the manfifest was loaded from a real image + manifest.AttestationImage.OriginalLayers = manifest.AttestationImage.SignedLayers + envelopes, err := oci.ExtractEnvelopes(manifest, attestation.VSAPredicateType) + require.NoError(t, err) + assert.Len(t, envelopes, 2) + newImg, err := manifest.BuildAttestationImage(attestation.WithReplacedLayers(tc.replace)) require.NoError(t, err) layers, err := newImg.Layers() require.NoError(t, err) - assert.Len(t, layers, 2) + if tc.replace { + assert.Len(t, layers, 2) + } else { + assert.Len(t, layers, 4) + } newImgs, err := manifest.BuildReferringArtifacts() require.NoError(t, err) diff --git a/pkg/attestation/attestation.go b/pkg/attestation/attestation.go index 0636142..f2f35a0 100644 --- a/pkg/attestation/attestation.go +++ b/pkg/attestation/attestation.go @@ -96,7 +96,7 @@ func (manifest *AttestationManifest) AddAttestation(ctx context.Context, signer if err != nil { return fmt.Errorf("failed to create signed layer: %w", err) } - manifest.AttestationImage.signedLayers = append(manifest.AttestationImage.signedLayers, layer) + manifest.AttestationImage.SignedLayers = append(manifest.AttestationImage.SignedLayers, layer) return nil } @@ -207,10 +207,10 @@ func (manifest *AttestationManifest) BuildAttestationImage(options ...func(*Atte if err != nil { return nil, fmt.Errorf("failed to create options: %w", err) } - resultLayers := manifest.AttestationImage.signedLayers + resultLayers := manifest.AttestationImage.SignedLayers for _, existingLayer := range manifest.AttestationImage.OriginalLayers { var found bool - for _, signedLayer := range manifest.AttestationImage.signedLayers { + for _, signedLayer := range manifest.AttestationImage.SignedLayers { if existingLayer.Statement == signedLayer.Statement { found = true // copy over original annotations @@ -236,7 +236,7 @@ func (manifest *AttestationManifest) BuildAttestationImage(options ...func(*Atte // build an image per attestation (layer) suitable for use as Referrers func (manifest *AttestationManifest) BuildReferringArtifacts() ([]v1.Image, error) { var images []v1.Image - for _, layer := range manifest.AttestationImage.signedLayers { + for _, layer := range manifest.AttestationImage.SignedLayers { opts := &AttestationManifestImageOptions{ strictReferrers: true, } diff --git a/pkg/attestation/types.go b/pkg/attestation/types.go index 760564f..8f37032 100644 --- a/pkg/attestation/types.go +++ b/pkg/attestation/types.go @@ -32,7 +32,7 @@ type AttestationLayer struct { type AttestationImage struct { OriginalLayers []*AttestationLayer - signedLayers []*AttestationLayer + SignedLayers []*AttestationLayer } type AttestationManifest struct {