in pkg/attestation/convert/provenance02/convert.go [31:71]
func Convert(nr utils.NoteResource, resourceURL string, env *provenance.Envelope) (*g.Note, *g.Occurrence, error) {
prov, err := getProvenance(env)
if err != nil {
return nil, nil, errors.Wrap(err, "error getting provenance")
}
n := g.Note{
Name: nr.NoteID,
Type: &g.Note_Build{
Build: &g.BuildNote{
BuilderVersion: prov.Predicate.Builder.ID,
},
},
} // end note
predicate, err := getPredicate(prov)
if err != nil {
return nil, nil, errors.Wrap(err, "error getting provenance predicate")
}
o := g.Occurrence{
ResourceUri: fmt.Sprintf("https://%s", resourceURL),
NoteName: nr.Name(),
Details: &g.Occurrence_Build{
Build: &g.BuildOccurrence{
IntotoStatement: &g.InTotoStatement{
Type: prov.Type,
PredicateType: prov.PredicateType,
Subject: getSubject(prov.Subject),
Predicate: predicate,
},
},
},
Envelope: &g.Envelope{
Payload: []byte(env.Payload),
PayloadType: env.PayloadType,
Signatures: getSignatures(env.Envelope),
},
}
return &n, &o, nil
}