@@ -22,10 +22,10 @@ import (
2222
2323 v1 "github.com/chainloop-dev/chainloop/app/cli/api/attestation/v1"
2424 "github.com/secure-systems-lab/go-securesystemslib/dsse"
25+ "google.golang.org/protobuf/encoding/protojson"
2526
2627 crv1 "github.com/google/go-containerregistry/pkg/v1"
27- "github.com/in-toto/in-toto-golang/in_toto"
28- slsacommon "github.com/in-toto/in-toto-golang/in_toto/slsa_provenance/common"
28+ intoto "github.com/in-toto/attestation/go/v1"
2929)
3030
3131// TODO: Figure out a more appropriate meaning
@@ -61,12 +61,12 @@ type NormalizedMaterial struct {
6161}
6262
6363type ProvenancePredicateCommon struct {
64- Metadata * Metadata `json:"metadata"`
65- Builder * slsacommon. ProvenanceBuilder `json:"builder"`
66- BuildType string `json:"buildType"`
67- Env map [string ]string `json:"env,omitempty"`
68- RunnerType string `json:"runnerType"`
69- RunnerURL string `json:"runnerURL,omitempty"`
64+ Metadata * Metadata `json:"metadata"`
65+ Builder * builder `json:"builder"`
66+ BuildType string `json:"buildType"`
67+ Env map [string ]string `json:"env,omitempty"`
68+ RunnerType string `json:"runnerType"`
69+ RunnerURL string `json:"runnerURL,omitempty"`
7070 // Custom annotations
7171 Annotations map [string ]string `json:"annotations,omitempty"`
7272}
@@ -90,6 +90,10 @@ type builderInfo struct {
9090 version , digest string
9191}
9292
93+ type builder struct {
94+ ID string `json:"id"`
95+ }
96+
9397type RendererCommon struct {
9498 predicateType string
9599 att * v1.Attestation
@@ -99,7 +103,7 @@ type RendererCommon struct {
99103func predicateCommon (builderInfo * builderInfo , att * v1.Attestation ) * ProvenancePredicateCommon {
100104 return & ProvenancePredicateCommon {
101105 BuildType : chainloopBuildType ,
102- Builder : & slsacommon. ProvenanceBuilder {ID : fmt .Sprintf (builderIDFmt , builderInfo .version , builderInfo .digest )},
106+ Builder : & builder {ID : fmt .Sprintf (builderIDFmt , builderInfo .version , builderInfo .digest )},
103107 Metadata : getChainloopMeta (att ),
104108 Env : att .EnvVars ,
105109 RunnerType : att .GetRunnerType ().String (),
@@ -110,11 +114,9 @@ func predicateCommon(builderInfo *builderInfo, att *v1.Attestation) *ProvenanceP
110114
111115func getChainloopMeta (att * v1.Attestation ) * Metadata {
112116 initializedAt := att .InitializedAt .AsTime ()
117+ finishedAt := att .GetFinishedAt ().AsTime ()
113118 wfMeta := att .GetWorkflow ()
114119
115- // Finished at is set at the time of render
116- finishedAt := time .Now ()
117-
118120 return & Metadata {
119121 InitializedAt : & initializedAt ,
120122 FinishedAt : & finishedAt ,
@@ -126,15 +128,15 @@ func getChainloopMeta(att *v1.Attestation) *Metadata {
126128 }
127129}
128130
129- func ExtractStatement (envelope * dsse.Envelope ) (* in_toto .Statement , error ) {
131+ func ExtractStatement (envelope * dsse.Envelope ) (* intoto .Statement , error ) {
130132 decodedPayload , err := envelope .DecodeB64Payload ()
131133 if err != nil {
132134 return nil , err
133135 }
134136
135137 // 1 - Extract the in-toto statement
136- statement := & in_toto .Statement {}
137- if err := json .Unmarshal (decodedPayload , statement ); err != nil {
138+ statement := & intoto .Statement {}
139+ if err := protojson .Unmarshal (decodedPayload , statement ); err != nil {
138140 return nil , fmt .Errorf ("un-marshaling predicate: %w" , err )
139141 }
140142
@@ -156,13 +158,6 @@ func ExtractPredicate(envelope *dsse.Envelope) (NormalizablePredicate, error) {
156158
157159 // 2 - Extract the Chainloop predicate from the in-toto statement
158160 switch statement .PredicateType {
159- case PredicateTypeV01 :
160- var predicate * ProvenancePredicateV01
161- if err = extractPredicate (statement , & predicate ); err != nil {
162- return nil , fmt .Errorf ("extracting predicate: %w" , err )
163- }
164-
165- return predicate , nil
166161 case PredicateTypeV02 :
167162 var predicate * ProvenancePredicateV02
168163 if err = extractPredicate (statement , & predicate ); err != nil {
@@ -175,8 +170,8 @@ func ExtractPredicate(envelope *dsse.Envelope) (NormalizablePredicate, error) {
175170 }
176171}
177172
178- func extractPredicate (statement * in_toto .Statement , v any ) error {
179- jsonPredicate , err := json .Marshal (statement .Predicate )
173+ func extractPredicate (statement * intoto .Statement , v any ) error {
174+ jsonPredicate , err := protojson .Marshal (statement .Predicate )
180175 if err != nil {
181176 return fmt .Errorf ("un-marshaling predicate: %w" , err )
182177 }
0 commit comments