88 "github.com/google/go-containerregistry/pkg/authn"
99 ggcrv1 "github.com/google/go-containerregistry/pkg/v1"
1010 intoto "github.com/in-toto/in-toto-golang/in_toto"
11- "github.com/pkg/errors"
1211 "go.uber.org/zap"
1312 corev1 "k8s.io/api/core/v1"
1413 "k8s.io/apimachinery/pkg/api/equality"
@@ -59,7 +58,7 @@ type PodProgressLogger interface {
5958
6059//go:generate counterfeiter . SLSAAttester
6160type SLSAAttester interface {
62- GenerateStatement (build * buildapi.Build , buildMetadata * cnb.BuildMetadata , pod * corev1.Pod , builderAndAppKeychain authn.Keychain , builderID slsa.BuilderID , depFns ... slsa.BuilderDependencyFn ) (intoto.Statement , error )
61+ AttestBuild (build * buildapi.Build , buildMetadata * cnb.BuildMetadata , pod * corev1.Pod , builderAndAppKeychain authn.Keychain , builderID slsa.BuilderID , depFns ... slsa.BuilderDependencyFn ) (intoto.Statement , error )
6362 Sign (ctx context.Context , stmt intoto.Statement , signers ... slsa.Signer ) ([]byte , error )
6463 Write (ctx context.Context , digestStr string , payload []byte , keychain authn.Keychain ) (ggcrv1.Image , string , error )
6564}
@@ -206,7 +205,7 @@ func (c *Reconciler) reconcile(ctx context.Context, build *buildapi.Build) error
206205 if c .FeatureFlags .GenerateSlsaAttestation {
207206 attestDigest , err = c .attestBuild (ctx , build , buildMetadata , pod )
208207 if err != nil {
209- return fmt .Errorf ("attesting build: %v" , err )
208+ return fmt .Errorf ("failed to attest build: %v" , err )
210209 }
211210 }
212211
@@ -399,7 +398,7 @@ func (c *Reconciler) buildMetadataFromBuildPod(pod *corev1.Pod) (*cnb.BuildMetad
399398 return cnb .DecompressBuildMetadata (status .State .Terminated .Message )
400399 }
401400 }
402- return nil , errors . New ( buildapi . CompletionContainerName + " container not found" )
401+ return nil , fmt . Errorf ( "%v container not found", buildapi . CompletionContainerName )
403402}
404403
405404func (c * Reconciler ) attestBuild (ctx context.Context , build * buildapi.Build , buildMetadata * cnb.BuildMetadata , pod * corev1.Pod ) (string , error ) {
@@ -414,18 +413,18 @@ func (c *Reconciler) attestBuild(ctx context.Context, build *buildapi.Build, bui
414413
415414 controllerSecrets , err := c .SecretFetcher .SecretsForSystemServiceAccount (ctx )
416415 if err != nil {
417- return "" , fmt .Errorf ("getting controller secrets: %v" , err )
416+ return "" , fmt .Errorf ("failed to get controller secrets: %v" , err )
418417 }
419418
420419 buildSecrets , err := c .SecretFetcher .SecretsForServiceAccount (ctx , build .ServiceAccount (), build .Namespace )
421420 if err != nil {
422- return "" , fmt .Errorf ("getting service account secrets: %v" , err )
421+ return "" , fmt .Errorf ("failed to get service account secrets: %v" , err )
423422 }
424423
425424 secrets := append (controllerSecrets , buildSecrets ... )
426425 signingKeys , err := secret .FilterAndExtractSLSASecrets (secrets )
427426 if err != nil {
428- return "" , fmt .Errorf ("parsing slsa secrets: %v" , err )
427+ return "" , fmt .Errorf ("failed to parse slsa secrets: %v" , err )
429428 }
430429
431430 signers := make ([]slsa.Signer , len (signingKeys ))
@@ -438,7 +437,7 @@ func (c *Reconciler) attestBuild(ctx context.Context, build *buildapi.Build, bui
438437 s , err = slsa .NewPKCS8Signer (key .Key , key .SecretName )
439438 }
440439 if err != nil {
441- return "" , fmt .Errorf ("creating signer: %v" , err )
440+ return "" , fmt .Errorf ("failed to create signer: %v" , err )
442441 }
443442 signers [i ] = s
444443 }
@@ -450,22 +449,22 @@ func (c *Reconciler) attestBuild(ctx context.Context, build *buildapi.Build, bui
450449
451450 deps , err := c .attestBuildDeps (ctx , build , pod , secrets )
452451 if err != nil {
453- return "" , fmt .Errorf ("gathering build deps: %v" , err )
452+ return "" , fmt .Errorf ("failed to gather build deps: %v" , err )
454453 }
455454
456- statement , err := c .Attester .GenerateStatement (build , buildMetadata , pod , keychain , buildId , deps ... )
455+ statement , err := c .Attester .AttestBuild (build , buildMetadata , pod , keychain , buildId , deps ... )
457456 if err != nil {
458- return "" , fmt .Errorf ("generating statement: %v" , err )
457+ return "" , fmt .Errorf ("failed to generate statement: %v" , err )
459458 }
460459
461460 payload , err := c .Attester .Sign (ctx , statement , signers ... )
462461 if err != nil {
463- return "" , fmt .Errorf ("signing statement: %v" , err )
462+ return "" , fmt .Errorf ("failed to sign statement: %v" , err )
464463 }
465464
466465 _ , digest , err := c .Attester .Write (ctx , buildMetadata .LatestImage , payload , keychain )
467466 if err != nil {
468- return "" , fmt .Errorf ("writting attestation: %v" , err )
467+ return "" , fmt .Errorf ("failed to write attestation: %v" , err )
469468 }
470469
471470 return digest , nil
@@ -483,10 +482,10 @@ func (c *Reconciler) attestBuildDeps(ctx context.Context, build *buildapi.Build,
483482 }
484483
485484 deps := []slsa.BuilderDependencyFn {
486- slsa .WithVersionedObject (ns ),
487- slsa .WithVersionedObject (build ),
488- slsa .WithVersionedObject (pod ),
489- slsa .WithVersionedObject (sa ),
485+ slsa .WithVersionedObject ("Namespace" , ns ),
486+ slsa .WithVersionedObject ("Build" , build ),
487+ slsa .WithVersionedObject ("Pod" , pod ),
488+ slsa .WithVersionedObject ("ServiceAccount" , sa ),
490489 }
491490
492491 attestSecrets := make ([]slsa.K8sObject , len (secrets ))
@@ -495,7 +494,7 @@ func (c *Reconciler) attestBuildDeps(ctx context.Context, build *buildapi.Build,
495494 }
496495
497496 if len (attestSecrets ) != 0 {
498- deps = append (deps , slsa .WithVersionedObjects (attestSecrets ))
497+ deps = append (deps , slsa .WithVersionedObjects ("Secrets" , attestSecrets ))
499498 }
500499
501500 return deps , nil
0 commit comments