@@ -43,6 +43,9 @@ type ProvenancePredicateV02 struct {
4343 Materials []* intoto.ResourceDescriptor `json:"materials,omitempty"`
4444 // Map materials and policies
4545 PolicyEvaluations map [string ][]* PolicyEvaluation `json:"policyEvaluations,omitempty"`
46+ // Used to read policy evaluations from old attestations
47+ PolicyEvaluationsFallback map [string ][]* PolicyEvaluation `json:"policy_evaluations,omitempty"`
48+
4649 // Whether the attestation has policy violations
4750 PolicyHasViolations bool `json:"policyHasViolations"`
4851 // Whether we want to block the attestation on policy violations
@@ -61,20 +64,40 @@ const (
6164)
6265
6366type PolicyEvaluation struct {
64- Name string `json:"name"`
65- MaterialName string `json:"materialName,omitempty"`
66- Body string `json:"body,omitempty"`
67- Sources []string `json:"sources,omitempty"`
68- PolicyReference * intoto.ResourceDescriptor `json:"policyReference,omitempty"`
69- Description string `json:"description,omitempty"`
70- Annotations map [string ]string `json:"annotations,omitempty"`
71- Violations []* PolicyViolation `json:"violations,omitempty"`
72- With map [string ]string `json:"with,omitempty"`
73- Type string `json:"type"`
74- Skipped bool `json:"skipped"`
75- SkipReasons []string `json:"skipReasons,omitempty"`
76- GroupReference * intoto.ResourceDescriptor `json:"groupReference,omitempty"`
77- Requirements []string `json:"requirements,omitempty"`
67+ Name string `json:"name"`
68+ MaterialName string `json:"materialName,omitempty"`
69+ // Needed to read old attestations
70+ MaterialNameFallback string `json:"material_name,omitempty"`
71+ Body string `json:"body,omitempty"`
72+ Sources []string `json:"sources,omitempty"`
73+ PolicyReference * intoto.ResourceDescriptor `json:"policyReference,omitempty"`
74+ // Support old attestations
75+ PolicyReferenceFallback * intoto.ResourceDescriptor `json:"policy_reference,omitempty"`
76+ Description string `json:"description,omitempty"`
77+ Annotations map [string ]string `json:"annotations,omitempty"`
78+ Violations []* PolicyViolation `json:"violations,omitempty"`
79+ With map [string ]string `json:"with,omitempty"`
80+ Type string `json:"type"`
81+ Skipped bool `json:"skipped"`
82+ SkipReasons []string `json:"skipReasons,omitempty"`
83+ GroupReference * intoto.ResourceDescriptor `json:"groupReference,omitempty"`
84+ Requirements []string `json:"requirements,omitempty"`
85+ }
86+
87+ func (e * PolicyEvaluation ) GetPolicyReference () * intoto.ResourceDescriptor {
88+ r := e .PolicyReference
89+ if r == nil {
90+ r = e .PolicyReferenceFallback
91+ }
92+ return r
93+ }
94+
95+ func (e * PolicyEvaluation ) GetMaterialName () string {
96+ n := e .MaterialName
97+ if n == "" {
98+ n = e .MaterialNameFallback
99+ }
100+ return n
78101}
79102
80103type PolicyViolation struct {
@@ -374,7 +397,11 @@ func (p *ProvenancePredicateV02) GetMaterials() []*NormalizedMaterial {
374397}
375398
376399func (p * ProvenancePredicateV02 ) GetPolicyEvaluations () map [string ][]* PolicyEvaluation {
377- return p .PolicyEvaluations
400+ evs := p .PolicyEvaluations
401+ if len (evs ) == 0 && len (p .PolicyEvaluationsFallback ) > 0 {
402+ evs = p .PolicyEvaluationsFallback
403+ }
404+ return evs
378405}
379406
380407func (p * ProvenancePredicateV02 ) HasPolicyViolations () bool {
0 commit comments