Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions contrib/trivy/pkg/converter.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ func Convert(results types.Results, artifactType ftypes.ArtifactType, artifactNa
Version: p.Version,
PURL: getPURL(p),
FilePath: p.FilePath,
Digest: string(p.Digest),
Dev: p.Dev,
})
libraryScannerPaths[lockfilePath] = libScanner
Expand Down
56 changes: 56 additions & 0 deletions contrib/trivy/pkg/converter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/aquasecurity/trivy-db/pkg/vulnsrc/vulnerability"
gocmp "github.com/google/go-cmp/cmp"
gocmpopts "github.com/google/go-cmp/cmp/cmpopts"
"github.com/package-url/packageurl-go"

ftypes "github.com/aquasecurity/trivy/pkg/fanal/types"
"github.com/aquasecurity/trivy/pkg/types"
Expand Down Expand Up @@ -883,6 +884,61 @@ func TestConvert(t *testing.T) {
},
},
},
{
// Trivy emits Package.Digest (sha1) for JAR files; the converter
// must thread it through to models.Library.Digest so downstream
// consumers can reuse the SHA-1 (e.g. for Maven Central
// canonicalization or supply-chain verification).
name: "JAR digest is preserved into models.Library",
args: args{
results: types.Results{
{
Target: "Java",
Class: types.ClassLangPkg,
Type: ftypes.Jar,
Packages: []ftypes.Package{
{
Name: "org.apache.logging.log4j:log4j-core",
Version: "2.14.1",
Identifier: ftypes.PkgIdentifier{
PURL: &packageurl.PackageURL{
Type: packageurl.TypeMaven,
Namespace: "org.apache.logging.log4j",
Name: "log4j-core",
Version: "2.14.1",
},
},
FilePath: "app/log4j-core-2.14.1.jar",
Digest: "sha1:ce8a86a3f50a4304749828ce68e7478cafbc8039",
},
},
},
},
artifactType: ftypes.TypeContainerImage,
artifactName: "test:latest",
},
want: &models.ScanResult{
JSONVersion: models.JSONVersion,
ScannedCves: models.VulnInfos{},
LibraryScanners: models.LibraryScanners{
models.LibraryScanner{
Type: ftypes.Jar,
LockfilePath: "/app/log4j-core-2.14.1.jar",
Libs: []models.Library{
{
Name: "org.apache.logging.log4j:log4j-core",
Version: "2.14.1",
PURL: "pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1",
FilePath: "app/log4j-core-2.14.1.jar",
Digest: "sha1:ce8a86a3f50a4304749828ce68e7478cafbc8039",
},
},
},
},
Packages: models.Packages{},
SrcPackages: models.SrcPackages{},
},
},
}

for _, tt := range tests {
Expand Down
Loading