Skip to content

Commit

Permalink
CycloneDx: add HasMetadata to 'toplevel' package
Browse files Browse the repository at this point in the history
Signed-off-by: mrizzi <[email protected]>
  • Loading branch information
mrizzi committed Feb 20, 2024
1 parent e8dced4 commit c79d40c
Showing 1 changed file with 27 additions and 15 deletions.
42 changes: 27 additions & 15 deletions pkg/ingestor/parser/cyclonedx/parser_cyclonedx.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,20 @@ func (c *cyclonedxParser) GetPredicates(ctx context.Context) *assembler.IngestPr

preds.IsDependency = append(preds.IsDependency, common.CreateTopLevelIsDeps(toplevel[0], c.packagePackages, nil, "top-level package GUAC heuristic connecting to each file/package")...)
preds.HasSBOM = append(preds.HasSBOM, common.CreateTopLevelHasSBOM(toplevel[0], c.doc, c.cdxBom.SerialNumber, timestamp))
// add HasMetadata to toplevel packages
hasMetadata := assembler.HasMetadataIngest{
Pkg: toplevel[0],
PkgMatchFlag: model.MatchFlags{Pkg: generated.PkgMatchTypeSpecificVersion},
HasMetadata: &model.HasMetadataInputSpec{
Key: "topLevelPackage",
Value: asmhelpers.PkgInputSpecToPurl(toplevel[0]),
Timestamp: time.Now().UTC(),
Justification: "CyclonDX top level package reference",
Origin: "GUAC CyclonDX",
Collector: "GUAC",
},
}
preds.HasMetadata = append(preds.HasMetadata, hasMetadata)
}

for id := range c.packagePackages {
Expand Down Expand Up @@ -306,22 +320,20 @@ func (c *cyclonedxParser) GetPredicates(ctx context.Context) *assembler.IngestPr
preds.IsDependency = append(preds.IsDependency, *p)
}
// add top level package reference to each package with a HasMetadata node
if toplevel != nil {
for _, topLevelPkg := range toplevel {
hasMetadata := assembler.HasMetadataIngest{
Pkg: packNode,
PkgMatchFlag: model.MatchFlags{Pkg: generated.PkgMatchTypeSpecificVersion},
HasMetadata: &model.HasMetadataInputSpec{
Key: "topLevelPackage",
Value: asmhelpers.PkgInputSpecToPurl(topLevelPkg),
Timestamp: time.Now().UTC(),
Justification: "CyclonDX top level package reference",
Origin: "GUAC CyclonDX",
Collector: "GUAC",
},
}
preds.HasMetadata = append(preds.HasMetadata, hasMetadata)
for _, topLevelPkg := range toplevel {
hasMetadata := assembler.HasMetadataIngest{
Pkg: packNode,
PkgMatchFlag: model.MatchFlags{Pkg: generated.PkgMatchTypeSpecificVersion},
HasMetadata: &model.HasMetadataInputSpec{
Key: "topLevelPackage",
Value: asmhelpers.PkgInputSpecToPurl(topLevelPkg),
Timestamp: time.Now().UTC(),
Justification: "CyclonDX top level package reference",
Origin: "GUAC CyclonDX",
Collector: "GUAC",
},
}
preds.HasMetadata = append(preds.HasMetadata, hasMetadata)
}
}
}
Expand Down

0 comments on commit c79d40c

Please sign in to comment.