mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-22 23:26:39 -08:00
feat: kbom and cyclonedx v1.5 spec support (#4708)
* feat: kbom and cyclonedx v1.5 spec support Signed-off-by: chenk <hen.keinan@gmail.com> * feat: kbom and cyclonedx v1.5 spec support Signed-off-by: chenk <hen.keinan@gmail.com> * feat: kbom and cyclonedx v1.5 spec support Signed-off-by: chenk <hen.keinan@gmail.com> * feat: feat: kbom and cyclonedx 1.5 spec support Signed-off-by: chenk <hen.keinan@gmail.com> * fix: unmarshal bom on v1.5 return invalid specification version Signed-off-by: chenk <hen.keinan@gmail.com> * feat: cyclonedx-1.5 spec support Signed-off-by: chenk <hen.keinan@gmail.com> --------- Signed-off-by: chenk <hen.keinan@gmail.com>
This commit is contained in:
@@ -224,7 +224,7 @@ $ trivy image --format cyclonedx --output result.json alpine:3.15
|
|||||||
$ cat result.json | jq .
|
$ cat result.json | jq .
|
||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:2be5773d-7cd3-4b4b-90a5-e165474ddace",
|
"serialNumber": "urn:uuid:2be5773d-7cd3-4b4b-90a5-e165474ddace",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ Take a look at the example below.
|
|||||||
$ cat <<EOF > trivy.vex.cdx
|
$ cat <<EOF > trivy.vex.cdx
|
||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"vulnerabilities": [
|
"vulnerabilities": [
|
||||||
{
|
{
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -7,7 +7,7 @@ require (
|
|||||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0
|
||||||
github.com/BurntSushi/toml v1.3.2
|
github.com/BurntSushi/toml v1.3.2
|
||||||
github.com/CycloneDX/cyclonedx-go v0.7.0
|
github.com/CycloneDX/cyclonedx-go v0.7.2-0.20230625092137-07e2f29defc3
|
||||||
github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible
|
github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible
|
||||||
github.com/Masterminds/sprig/v3 v3.2.3
|
github.com/Masterminds/sprig/v3 v3.2.3
|
||||||
github.com/NYTimes/gziphandler v1.1.1
|
github.com/NYTimes/gziphandler v1.1.1
|
||||||
|
|||||||
5
go.sum
5
go.sum
@@ -235,8 +235,8 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi
|
|||||||
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
||||||
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
github.com/CycloneDX/cyclonedx-go v0.7.0 h1:jNxp8hL7UpcvPDFXjY+Y1ibFtsW+e5zyF9QoSmhK/zg=
|
github.com/CycloneDX/cyclonedx-go v0.7.2-0.20230625092137-07e2f29defc3 h1:NqeV+ZMqpcosu0Xg2VW14Ru9ayBs/toe2oihS7sN6Xo=
|
||||||
github.com/CycloneDX/cyclonedx-go v0.7.0/go.mod h1:W5Z9w8pTTL+t+yG3PCiFRGlr8PUlE0pGWzKSJbsyXkg=
|
github.com/CycloneDX/cyclonedx-go v0.7.2-0.20230625092137-07e2f29defc3/go.mod h1:fGXSp1lCDfMQ8KR1EjxT4ewc5HHhGczRF2pWhLSWohs=
|
||||||
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
|
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
|
||||||
github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible h1:juIaKLLVhqzP55d8x4cSVgwyQv76Z55/fRv/UBr2KkQ=
|
github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible h1:juIaKLLVhqzP55d8x4cSVgwyQv76Z55/fRv/UBr2KkQ=
|
||||||
github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible/go.mod h1:BB1eHdMLYEFuFdBlRMb0N7YGVdM5s6Pt0njxgvfbGGs=
|
github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible/go.mod h1:BB1eHdMLYEFuFdBlRMb0N7YGVdM5s6Pt0njxgvfbGGs=
|
||||||
@@ -1643,6 +1643,7 @@ github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG
|
|||||||
github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I=
|
github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I=
|
||||||
github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes=
|
github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes=
|
||||||
github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
|
github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
|
||||||
|
github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo=
|
||||||
github.com/testcontainers/testcontainers-go v0.20.1 h1:mK15UPJ8c5P+NsQKmkqzs/jMdJt6JMs5vlw2y4j92c0=
|
github.com/testcontainers/testcontainers-go v0.20.1 h1:mK15UPJ8c5P+NsQKmkqzs/jMdJt6JMs5vlw2y4j92c0=
|
||||||
github.com/testcontainers/testcontainers-go v0.20.1/go.mod h1:zb+NOlCQBkZ7RQp4QI+YMIHyO2CQ/qsXzNF5eLJ24SY=
|
github.com/testcontainers/testcontainers-go v0.20.1/go.mod h1:zb+NOlCQBkZ7RQp4QI+YMIHyO2CQ/qsXzNF5eLJ24SY=
|
||||||
github.com/tetratelabs/wazero v1.2.0 h1:I/8LMf4YkCZ3r2XaL9whhA0VMyAvF6QE+O7rco0DCeQ=
|
github.com/tetratelabs/wazero v1.2.0 h1:I/8LMf4YkCZ3r2XaL9whhA0VMyAvF6QE+O7rco0DCeQ=
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ func TestK8s(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, got.Metadata.Component.Name, "kind-kind-test")
|
assert.Equal(t, got.Metadata.Component.Name, "kind-kind-test")
|
||||||
assert.Equal(t, got.Metadata.Component.Type, cdx.ComponentType("container"))
|
assert.Equal(t, got.Metadata.Component.Type, cdx.ComponentType("platform"))
|
||||||
|
|
||||||
// Has components
|
// Has components
|
||||||
assert.True(t, len(*got.Components) > 0)
|
assert.True(t, len(*got.Components) > 0)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:e1f49b6f-018f-4bf3-97c8-85cd92a82c7c",
|
"serialNumber": "urn:uuid:e1f49b6f-018f-4bf3-97c8-85cd92a82c7c",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:1455c02d-64ca-453e-a5df-ddfb70a7c804",
|
"serialNumber": "urn:uuid:1455c02d-64ca-453e-a5df-ddfb70a7c804",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:31ee662c-480e-4f63-9765-23ea8afc754d",
|
"serialNumber": "urn:uuid:31ee662c-480e-4f63-9765-23ea8afc754d",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func TestRekor_RetrieveSBOM(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "happy path",
|
name: "happy path",
|
||||||
digest: "sha256:5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03",
|
digest: "sha256:5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03",
|
||||||
want: `{"bomFormat":"CycloneDX","specVersion":"1.4","version":2}`,
|
want: `{"bomFormat":"CycloneDX","specVersion":"1.5","version":2}`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "404",
|
name: "404",
|
||||||
|
|||||||
2
pkg/fanal/analyzer/sbom/testdata/cdx.json
vendored
2
pkg/fanal/analyzer/sbom/testdata/cdx.json
vendored
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:73f26314-e86a-4f5a-befc-f853a15b64e7",
|
"serialNumber": "urn:uuid:73f26314-e86a-4f5a-befc-f853a15b64e7",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
2
pkg/fanal/artifact/sbom/testdata/bom.json
vendored
2
pkg/fanal/artifact/sbom/testdata/bom.json
vendored
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ func clusterInfoToReportResources(allArtifact []*artifacts.Artifact, clusterName
|
|||||||
}
|
}
|
||||||
rootComponent := &core.Component{
|
rootComponent := &core.Component{
|
||||||
Name: clusterName,
|
Name: clusterName,
|
||||||
Type: cdx.ComponentTypeContainer,
|
Type: cdx.ComponentTypePlatform,
|
||||||
Components: coreComponents,
|
Components: coreComponents,
|
||||||
}
|
}
|
||||||
return rootComponent, nil
|
return rootComponent, nil
|
||||||
@@ -304,7 +304,7 @@ func nodeComponent(nf bom.NodeInfo) *core.Component {
|
|||||||
k8sComponentName: nf.NodeName,
|
k8sComponentName: nf.NodeName,
|
||||||
}, k8sCoreComponentNamespace)...)
|
}, k8sCoreComponentNamespace)...)
|
||||||
return &core.Component{
|
return &core.Component{
|
||||||
Type: cdx.ComponentTypeContainer,
|
Type: cdx.ComponentTypePlatform,
|
||||||
Name: nf.NodeName,
|
Name: nf.NodeName,
|
||||||
Properties: properties,
|
Properties: properties,
|
||||||
Components: []*core.Component{
|
Components: []*core.Component{
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ func TestK8sClusterInfoReport(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: &core.Component{
|
want: &core.Component{
|
||||||
Type: cdx.ComponentTypeContainer,
|
Type: cdx.ComponentTypePlatform,
|
||||||
Name: "test-cluster",
|
Name: "test-cluster",
|
||||||
Components: []*core.Component{
|
Components: []*core.Component{
|
||||||
{
|
{
|
||||||
@@ -110,7 +110,7 @@ func TestK8sClusterInfoReport(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: cdx.ComponentTypeContainer,
|
Type: cdx.ComponentTypePlatform,
|
||||||
Name: "kind-control-plane",
|
Name: "kind-control-plane",
|
||||||
Properties: []core.Property{
|
Properties: []core.Property{
|
||||||
{Name: "Architecture", Value: "arm64"},
|
{Name: "Architecture", Value: "arm64"},
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ var (
|
|||||||
Data: &cyclonedx.BOM{
|
Data: &cyclonedx.BOM{
|
||||||
BOMFormat: cyclonedx.BOMFormat,
|
BOMFormat: cyclonedx.BOMFormat,
|
||||||
SerialNumber: "urn:uuid:6453fd82-71f4-47c8-ad12-01775619c443",
|
SerialNumber: "urn:uuid:6453fd82-71f4-47c8-ad12-01775619c443",
|
||||||
SpecVersion: cyclonedx.SpecVersion1_4,
|
SpecVersion: cyclonedx.SpecVersion1_5,
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cyclonedx.Metadata{
|
Metadata: &cyclonedx.Metadata{
|
||||||
Timestamp: "2022-09-15T13:53:49+00:00",
|
Timestamp: "2022-09-15T13:53:49+00:00",
|
||||||
@@ -138,7 +138,7 @@ var (
|
|||||||
Data: &cyclonedx.BOM{
|
Data: &cyclonedx.BOM{
|
||||||
BOMFormat: cyclonedx.BOMFormat,
|
BOMFormat: cyclonedx.BOMFormat,
|
||||||
SerialNumber: "urn:uuid:8b16c9a3-e957-4c85-b43d-7dd05ea0421c",
|
SerialNumber: "urn:uuid:8b16c9a3-e957-4c85-b43d-7dd05ea0421c",
|
||||||
SpecVersion: cyclonedx.SpecVersion1_4,
|
SpecVersion: cyclonedx.SpecVersion1_5,
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cyclonedx.Metadata{
|
Metadata: &cyclonedx.Metadata{
|
||||||
Timestamp: "2022-10-21T09:50:08+00:00",
|
Timestamp: "2022-10-21T09:50:08+00:00",
|
||||||
@@ -205,7 +205,7 @@ var (
|
|||||||
Predicate: &attestation.CosignPredicate{
|
Predicate: &attestation.CosignPredicate{
|
||||||
Data: &cyclonedx.BOM{
|
Data: &cyclonedx.BOM{
|
||||||
BOMFormat: cyclonedx.BOMFormat,
|
BOMFormat: cyclonedx.BOMFormat,
|
||||||
SpecVersion: cyclonedx.SpecVersion1_4,
|
SpecVersion: cyclonedx.SpecVersion1_5,
|
||||||
Version: 2,
|
Version: 2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -132,10 +132,11 @@ func TestMarshaler_CoreComponent(t *testing.T) {
|
|||||||
},
|
},
|
||||||
|
|
||||||
want: &cdx.BOM{
|
want: &cdx.BOM{
|
||||||
XMLNS: "http://cyclonedx.org/schema/bom/1.4",
|
XMLNS: "http://cyclonedx.org/schema/bom/1.5",
|
||||||
BOMFormat: "CycloneDX",
|
BOMFormat: "CycloneDX",
|
||||||
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
||||||
SpecVersion: cdx.SpecVersion1_4,
|
JSONSchema: "http://cyclonedx.org/schema/bom-1.5.schema.json",
|
||||||
|
SpecVersion: cdx.SpecVersion1_5,
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cdx.Metadata{
|
Metadata: &cdx.Metadata{
|
||||||
Timestamp: "2021-08-25T12:20:30+00:00",
|
Timestamp: "2021-08-25T12:20:30+00:00",
|
||||||
|
|||||||
@@ -182,9 +182,10 @@ func TestMarshaler_Marshal(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: &cdx.BOM{
|
want: &cdx.BOM{
|
||||||
XMLNS: "http://cyclonedx.org/schema/bom/1.4",
|
XMLNS: "http://cyclonedx.org/schema/bom/1.5",
|
||||||
BOMFormat: "CycloneDX",
|
BOMFormat: "CycloneDX",
|
||||||
SpecVersion: cdx.SpecVersion1_4,
|
SpecVersion: cdx.SpecVersion1_5,
|
||||||
|
JSONSchema: "http://cyclonedx.org/schema/bom-1.5.schema.json",
|
||||||
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cdx.Metadata{
|
Metadata: &cdx.Metadata{
|
||||||
@@ -726,9 +727,10 @@ func TestMarshaler_Marshal(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: &cdx.BOM{
|
want: &cdx.BOM{
|
||||||
XMLNS: "http://cyclonedx.org/schema/bom/1.4",
|
XMLNS: "http://cyclonedx.org/schema/bom/1.5",
|
||||||
BOMFormat: "CycloneDX",
|
BOMFormat: "CycloneDX",
|
||||||
SpecVersion: cdx.SpecVersion1_4,
|
SpecVersion: cdx.SpecVersion1_5,
|
||||||
|
JSONSchema: "http://cyclonedx.org/schema/bom-1.5.schema.json",
|
||||||
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cdx.Metadata{
|
Metadata: &cdx.Metadata{
|
||||||
@@ -1060,9 +1062,10 @@ func TestMarshaler_Marshal(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: &cdx.BOM{
|
want: &cdx.BOM{
|
||||||
XMLNS: "http://cyclonedx.org/schema/bom/1.4",
|
XMLNS: "http://cyclonedx.org/schema/bom/1.5",
|
||||||
BOMFormat: "CycloneDX",
|
BOMFormat: "CycloneDX",
|
||||||
SpecVersion: cdx.SpecVersion1_4,
|
SpecVersion: cdx.SpecVersion1_5,
|
||||||
|
JSONSchema: "http://cyclonedx.org/schema/bom-1.5.schema.json",
|
||||||
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cdx.Metadata{
|
Metadata: &cdx.Metadata{
|
||||||
@@ -1187,9 +1190,10 @@ func TestMarshaler_Marshal(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: &cdx.BOM{
|
want: &cdx.BOM{
|
||||||
XMLNS: "http://cyclonedx.org/schema/bom/1.4",
|
XMLNS: "http://cyclonedx.org/schema/bom/1.5",
|
||||||
BOMFormat: "CycloneDX",
|
BOMFormat: "CycloneDX",
|
||||||
SpecVersion: cdx.SpecVersion1_4,
|
SpecVersion: cdx.SpecVersion1_5,
|
||||||
|
JSONSchema: "http://cyclonedx.org/schema/bom-1.5.schema.json",
|
||||||
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cdx.Metadata{
|
Metadata: &cdx.Metadata{
|
||||||
@@ -1267,9 +1271,10 @@ func TestMarshaler_Marshal(t *testing.T) {
|
|||||||
Results: types.Results{},
|
Results: types.Results{},
|
||||||
},
|
},
|
||||||
want: &cdx.BOM{
|
want: &cdx.BOM{
|
||||||
XMLNS: "http://cyclonedx.org/schema/bom/1.4",
|
XMLNS: "http://cyclonedx.org/schema/bom/1.5",
|
||||||
BOMFormat: "CycloneDX",
|
BOMFormat: "CycloneDX",
|
||||||
SpecVersion: cdx.SpecVersion1_4,
|
SpecVersion: cdx.SpecVersion1_5,
|
||||||
|
JSONSchema: "http://cyclonedx.org/schema/bom-1.5.schema.json",
|
||||||
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
SerialNumber: "urn:uuid:3ff14136-e09f-4df9-80ea-000000000001",
|
||||||
Version: 1,
|
Version: 1,
|
||||||
Metadata: &cdx.Metadata{
|
Metadata: &cdx.Metadata{
|
||||||
|
|||||||
2
pkg/sbom/cyclonedx/testdata/happy/bom.json
vendored
2
pkg/sbom/cyclonedx/testdata/happy/bom.json
vendored
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:8366a7c8-229c-4518-b86c-8a1bcf69af01",
|
"serialNumber": "urn:uuid:8366a7c8-229c-4518-b86c-8a1bcf69af01",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:a085f5e7-f5c1-4bc0-96be-ffa4d235ebc8",
|
"serialNumber": "urn:uuid:a085f5e7-f5c1-4bc0-96be-ffa4d235ebc8",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
"serialNumber": "urn:uuid:c986ba94-e37d-49c8-9e30-96daccd0415b",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
2
pkg/vex/testdata/cyclonedx.json
vendored
2
pkg/vex/testdata/cyclonedx.json
vendored
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"bomFormat": "CycloneDX",
|
"bomFormat": "CycloneDX",
|
||||||
"specVersion": "1.4",
|
"specVersion": "1.5",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"vulnerabilities": [
|
"vulnerabilities": [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user