func Convert()

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
}