Skip to content
This repository was archived by the owner on Dec 3, 2024. It is now read-only.

Commit 2a4bef0

Browse files
authored
Merge pull request #179 from docker/fix-sign-unsigned-statements
fix: only sign statements
2 parents 203577e + bb0843c commit 2a4bef0

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

attestation/attestation.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,9 @@ func layersFromImage(image v1.Image) ([]*Layer, error) {
9696
// copy original annotations
9797
ann := maps.Clone(layerDesc.Annotations)
9898
// only decode intoto statements
99-
stmt := new(intoto.Statement)
99+
var stmt *intoto.Statement
100100
if mt == types.MediaType(intoto.PayloadType) {
101+
stmt = new(intoto.Statement)
101102
err = json.NewDecoder(r).Decode(&stmt)
102103
if err != nil {
103104
return nil, fmt.Errorf("failed to decode statement layer contents: %w", err)

sign.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ func SignStatements(ctx context.Context, idx v1.ImageIndex, signer dsse.SignerVe
1919
// sign every attestation layer in each manifest
2020
for _, manifest := range attestationManifests {
2121
for _, layer := range manifest.OriginalLayers {
22-
err = manifest.Add(ctx, signer, layer.Statement, opts)
23-
if err != nil {
24-
return nil, fmt.Errorf("failed to sign attestation layer %w", err)
22+
// skip layers without statements
23+
if layer.Statement != nil {
24+
err = manifest.Add(ctx, signer, layer.Statement, opts)
25+
if err != nil {
26+
return nil, fmt.Errorf("failed to sign attestation layer %w", err)
27+
}
2528
}
2629
}
2730
}

0 commit comments

Comments
 (0)