chore: revert GolangBinMetadata name and make analogous GolangModMetadata (#1458)

This commit is contained in:
Keith Zantow 2023-01-13 16:46:12 -05:00 committed by GitHub
parent 641bccc79b
commit 934644232a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 1730 additions and 87 deletions

View File

@ -6,5 +6,5 @@ const (
// JSONSchemaVersion is the current schema version output by the JSON encoder // JSONSchemaVersion is the current schema version output by the JSON encoder
// This is roughly following the "SchemaVer" guidelines for versioning the JSON schema. Please see schema/json/README.md for details on how to increment. // This is roughly following the "SchemaVer" guidelines for versioning the JSON schema. Please see schema/json/README.md for details on how to increment.
JSONSchemaVersion = "6.1.0" JSONSchemaVersion = "6.2.0"
) )

View File

@ -40,7 +40,8 @@ type artifactMetadataContainer struct {
Dotnet pkg.DotnetDepsMetadata Dotnet pkg.DotnetDepsMetadata
Dpkg pkg.DpkgMetadata Dpkg pkg.DpkgMetadata
Gem pkg.GemMetadata Gem pkg.GemMetadata
Go pkg.GolangMetadata GoBin pkg.GolangBinMetadata
GoMod pkg.GolangModMetadata
Hackage pkg.HackageMetadata Hackage pkg.HackageMetadata
Java pkg.JavaMetadata Java pkg.JavaMetadata
KbPackage pkg.KbPackageMetadata KbPackage pkg.KbPackageMetadata

File diff suppressed because it is too large Load Diff

View File

@ -90,8 +90,8 @@ func Test_encodeComponentProperties(t *testing.T) {
Version: "v0.0.0-20211006190231-62292e806868", Version: "v0.0.0-20211006190231-62292e806868",
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: "1.17", GoCompiledVersion: "1.17",
Architecture: "amd64", Architecture: "amd64",
H1Digest: "h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=", H1Digest: "h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=",
@ -99,13 +99,32 @@ func Test_encodeComponentProperties(t *testing.T) {
}, },
expected: &[]cyclonedx.Property{ expected: &[]cyclonedx.Property{
{Name: "syft:package:language", Value: pkg.Go.String()}, {Name: "syft:package:language", Value: pkg.Go.String()},
{Name: "syft:package:metadataType", Value: "GolangMetadata"}, {Name: "syft:package:metadataType", Value: "GolangBinMetadata"},
{Name: "syft:package:type", Value: "go-module"}, {Name: "syft:package:type", Value: "go-module"},
{Name: "syft:metadata:architecture", Value: "amd64"}, {Name: "syft:metadata:architecture", Value: "amd64"},
{Name: "syft:metadata:goCompiledVersion", Value: "1.17"}, {Name: "syft:metadata:goCompiledVersion", Value: "1.17"},
{Name: "syft:metadata:h1Digest", Value: "h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k="}, {Name: "syft:metadata:h1Digest", Value: "h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k="},
}, },
}, },
{
name: "from go mod",
input: pkg.Package{
Name: "golang.org/x/net",
Version: "v0.0.0-20211006190231-62292e806868",
Language: pkg.Go,
Type: pkg.GoModulePkg,
MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangModMetadata{
H1Digest: "h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=",
},
},
expected: &[]cyclonedx.Property{
{Name: "syft:package:language", Value: pkg.Go.String()},
{Name: "syft:package:metadataType", Value: "GolangModMetadata"},
{Name: "syft:package:type", Value: "go-module"},
{Name: "syft:metadata:h1Digest", Value: "h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k="},
},
},
{ {
name: "from rpm", name: "from rpm",
input: pkg.Package{ input: pkg.Package{

View File

@ -331,7 +331,7 @@ func toPackageChecksums(p pkg.Package) ([]common.Checksum, bool) {
}) })
} }
} }
case pkg.GolangMetadata: case pkg.GolangBinMetadata:
// because the H1 digest is found in the Golang metadata we cannot claim that the files were analyzed // because the H1 digest is found in the Golang metadata we cannot claim that the files were analyzed
algo, hexStr, err := util.HDigestToSHA(meta.H1Digest) algo, hexStr, err := util.HDigestToSHA(meta.H1Digest)
if err != nil { if err != nil {

View File

@ -76,8 +76,8 @@ func Test_toPackageChecksums(t *testing.T) {
Name: "test", Name: "test",
Version: "1.0.0", Version: "1.0.0",
Language: pkg.Go, Language: pkg.Go,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
H1Digest: "h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=", H1Digest: "h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=",
}, },
}, },
@ -381,8 +381,8 @@ func Test_H1Digest(t *testing.T) {
pkg: pkg.Package{ pkg: pkg.Package{
Name: "github.com/googleapis/gnostic", Name: "github.com/googleapis/gnostic",
Version: "v0.5.5", Version: "v0.5.5",
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
H1Digest: "h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=", H1Digest: "h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=",
}, },
}, },
@ -393,8 +393,8 @@ func Test_H1Digest(t *testing.T) {
pkg: pkg.Package{ pkg: pkg.Package{
Name: "github.com/googleapis/gnostic", Name: "github.com/googleapis/gnostic",
Version: "v0.5.5", Version: "v0.5.5",
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
H1Digest: "h1:9fHAtK0uzzz", H1Digest: "h1:9fHAtK0uzzz",
}, },
}, },
@ -405,8 +405,8 @@ func Test_H1Digest(t *testing.T) {
pkg: pkg.Package{ pkg: pkg.Package{
Name: "github.com/googleapis/gnostic", Name: "github.com/googleapis/gnostic",
Version: "v0.5.5", Version: "v0.5.5",
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
H1Digest: "h12:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=", H1Digest: "h12:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=",
}, },
}, },

View File

@ -366,7 +366,7 @@ func extractMetadata(p *spdx.Package, info pkgInfo) (pkg.MetadataType, interface
h1Digest = digest h1Digest = digest
break break
} }
return pkg.GolangMetadataType, pkg.GolangMetadata{ return pkg.GolangBinMetadataType, pkg.GolangBinMetadata{
H1Digest: h1Digest, H1Digest: h1Digest,
} }
} }

View File

@ -302,8 +302,8 @@ func TestH1Digest(t *testing.T) {
for _, test := range tests { for _, test := range tests {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
p := toSyftPackage(&test.pkg) p := toSyftPackage(&test.pkg)
require.Equal(t, pkg.GolangMetadataType, p.MetadataType) require.Equal(t, pkg.GolangBinMetadataType, p.MetadataType)
meta := p.Metadata.(pkg.GolangMetadata) meta := p.Metadata.(pkg.GolangBinMetadata)
require.Equal(t, test.expectedDigest, meta.H1Digest) require.Equal(t, test.expectedDigest, meta.H1Digest)
}) })
} }

View File

@ -34,7 +34,7 @@ func TestUnmarshalPackageGolang(t *testing.T) {
"language": "go", "language": "go",
"cpes": [], "cpes": [],
"purl": "pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0", "purl": "pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0",
"metadataType": "GolangMetadata", "metadataType": "GolangBinMetadata",
"metadata": { "metadata": {
"goCompiledVersion": "go1.18", "goCompiledVersion": "go1.18",
"architecture": "amd64", "architecture": "amd64",
@ -43,7 +43,7 @@ func TestUnmarshalPackageGolang(t *testing.T) {
}`), }`),
assert: func(p *Package) { assert: func(p *Package) {
assert.NotNil(t, p.Metadata) assert.NotNil(t, p.Metadata)
golangMetadata := p.Metadata.(pkg.GolangMetadata) golangMetadata := p.Metadata.(pkg.GolangBinMetadata)
assert.NotEmpty(t, golangMetadata) assert.NotEmpty(t, golangMetadata)
assert.Equal(t, "go1.18", golangMetadata.GoCompiledVersion) assert.Equal(t, "go1.18", golangMetadata.GoCompiledVersion)
}, },
@ -93,7 +93,7 @@ func Test_unpackMetadata(t *testing.T) {
}{ }{
{ {
name: "unmarshal package metadata", name: "unmarshal package metadata",
metadataType: pkg.GolangMetadataType, metadataType: pkg.GolangBinMetadataType,
packageData: []byte(`{ packageData: []byte(`{
"id": "8b594519bc23da50", "id": "8b594519bc23da50",
"name": "gopkg.in/square/go-jose.v2", "name": "gopkg.in/square/go-jose.v2",
@ -109,7 +109,7 @@ func Test_unpackMetadata(t *testing.T) {
"language": "go", "language": "go",
"cpes": [], "cpes": [],
"purl": "pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0", "purl": "pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0",
"metadataType": "GolangMetadata", "metadataType": "GolangBinMetadata",
"metadata": { "metadata": {
"goCompiledVersion": "go1.18", "goCompiledVersion": "go1.18",
"architecture": "amd64", "architecture": "amd64",
@ -215,18 +215,18 @@ func Test_unpackMetadata(t *testing.T) {
{ {
name: "can handle package with metadata type but missing metadata", name: "can handle package with metadata type but missing metadata",
packageData: []byte(`{ packageData: []byte(`{
"metadataType": "GolangMetadata" "metadataType": "GolangBinMetadata"
}`), }`),
metadataType: pkg.GolangMetadataType, metadataType: pkg.GolangBinMetadataType,
wantMetadata: pkg.GolangMetadata{}, wantMetadata: pkg.GolangBinMetadata{},
}, },
{ {
name: "can handle package with golang bin metadata type", name: "can handle package with golang bin metadata type",
packageData: []byte(`{ packageData: []byte(`{
"metadataType": "GolangBinMetadata" "metadataType": "GolangBinMetadata"
}`), }`),
metadataType: pkg.GolangMetadataType, metadataType: pkg.GolangBinMetadataType,
wantMetadata: pkg.GolangMetadata{}, wantMetadata: pkg.GolangBinMetadata{},
}, },
{ {
name: "can handle package with unknonwn metadata type and missing metadata", name: "can handle package with unknonwn metadata type and missing metadata",

View File

@ -89,7 +89,7 @@
} }
}, },
"schema": { "schema": {
"version": "6.0.0", "version": "6.1.0",
"url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-6.0.0.json" "url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-6.1.0.json"
} }
} }

View File

@ -185,7 +185,7 @@
} }
}, },
"schema": { "schema": {
"version": "6.1.0", "version": "6.2.0",
"url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-6.1.0.json" "url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-6.2.0.json"
} }
} }

View File

@ -9,7 +9,7 @@
"locations": [ "locations": [
{ {
"path": "/somefile-1.txt", "path": "/somefile-1.txt",
"layerID": "sha256:fb6beecb75b39f4bb813dbf177e501edd5ddb3e69bb45cedeb78c676ee1b7a59" "layerID": "sha256:6afd1cb55939d87ba4c298907d0a53059bb3742c2d65314643e2464071cf0a2d"
} }
], ],
"licenses": [ "licenses": [
@ -40,7 +40,7 @@
"locations": [ "locations": [
{ {
"path": "/somefile-2.txt", "path": "/somefile-2.txt",
"layerID": "sha256:319b588ce64253a87b533c8ed01cf0025e0eac98e7b516e12532957e1244fdec" "layerID": "sha256:657997cff9a836139186239bdfe77250239a700d0ed97d57e101c295e8244319"
} }
], ],
"licenses": [], "licenses": [],
@ -64,11 +64,11 @@
], ],
"artifactRelationships": [], "artifactRelationships": [],
"source": { "source": {
"id": "1a678f111c8ddc66fd82687bb024e0dd6af61314404937a80e810c0cf317b796", "id": "c85f7ae1b0ac38342c1cf1a6f7ea2b4b1ddc49cd1b24219ebd05dc10b3303491",
"type": "image", "type": "image",
"target": { "target": {
"userInput": "user-image-input", "userInput": "user-image-input",
"imageID": "sha256:3c51b06feb0cda8ee62d0e3755ef2a8496a6b71f8a55b245f07f31c4bb813d31", "imageID": "sha256:b5c0bfa8bcf70c75d92ebebbf76af667906d56e6fad50c37e7f93df824a64b79",
"manifestDigest": "sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368", "manifestDigest": "sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368",
"mediaType": "application/vnd.docker.distribution.manifest.v2+json", "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"tags": [ "tags": [
@ -78,17 +78,17 @@
"layers": [ "layers": [
{ {
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"digest": "sha256:fb6beecb75b39f4bb813dbf177e501edd5ddb3e69bb45cedeb78c676ee1b7a59", "digest": "sha256:6afd1cb55939d87ba4c298907d0a53059bb3742c2d65314643e2464071cf0a2d",
"size": 22 "size": 22
}, },
{ {
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"digest": "sha256:319b588ce64253a87b533c8ed01cf0025e0eac98e7b516e12532957e1244fdec", "digest": "sha256:657997cff9a836139186239bdfe77250239a700d0ed97d57e101c295e8244319",
"size": 16 "size": 16
} }
], ],
"manifest": "eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjo2NzMsImRpZ2VzdCI6InNoYTI1NjozYzUxYjA2ZmViMGNkYThlZTYyZDBlMzc1NWVmMmE4NDk2YTZiNzFmOGE1NWIyNDVmMDdmMzFjNGJiODEzZDMxIn0sImxheWVycyI6W3sibWVkaWFUeXBlIjoiYXBwbGljYXRpb24vdm5kLmRvY2tlci5pbWFnZS5yb290ZnMuZGlmZi50YXIuZ3ppcCIsInNpemUiOjIwNDgsImRpZ2VzdCI6InNoYTI1NjpmYjZiZWVjYjc1YjM5ZjRiYjgxM2RiZjE3N2U1MDFlZGQ1ZGRiM2U2OWJiNDVjZWRlYjc4YzY3NmVlMWI3YTU5In0seyJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmltYWdlLnJvb3Rmcy5kaWZmLnRhci5nemlwIiwic2l6ZSI6MjA0OCwiZGlnZXN0Ijoic2hhMjU2OjMxOWI1ODhjZTY0MjUzYTg3YjUzM2M4ZWQwMWNmMDAyNWUwZWFjOThlN2I1MTZlMTI1MzI5NTdlMTI0NGZkZWMifV19", "manifest": "eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjo2NzMsImRpZ2VzdCI6InNoYTI1NjpiNWMwYmZhOGJjZjcwYzc1ZDkyZWJlYmJmNzZhZjY2NzkwNmQ1NmU2ZmFkNTBjMzdlN2Y5M2RmODI0YTY0Yjc5In0sImxheWVycyI6W3sibWVkaWFUeXBlIjoiYXBwbGljYXRpb24vdm5kLmRvY2tlci5pbWFnZS5yb290ZnMuZGlmZi50YXIuZ3ppcCIsInNpemUiOjIwNDgsImRpZ2VzdCI6InNoYTI1Njo2YWZkMWNiNTU5MzlkODdiYTRjMjk4OTA3ZDBhNTMwNTliYjM3NDJjMmQ2NTMxNDY0M2UyNDY0MDcxY2YwYTJkIn0seyJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmltYWdlLnJvb3Rmcy5kaWZmLnRhci5nemlwIiwic2l6ZSI6MjA0OCwiZGlnZXN0Ijoic2hhMjU2OjY1Nzk5N2NmZjlhODM2MTM5MTg2MjM5YmRmZTc3MjUwMjM5YTcwMGQwZWQ5N2Q1N2UxMDFjMjk1ZTgyNDQzMTkifV19",
"config": "eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiV29ya2luZ0RpciI6Ii8iLCJPbkJ1aWxkIjpudWxsfSwiY3JlYXRlZCI6IjIwMjItMDgtMDFUMjA6MDk6MjIuNTA5NDIxNzEyWiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIyLTA4LTAxVDIwOjA5OjIyLjQ4Nzg5NTUxOVoiLCJjcmVhdGVkX2J5IjoiQUREIGZpbGUtMS50eHQgL3NvbWVmaWxlLTEudHh0ICMgYnVpbGRraXQiLCJjb21tZW50IjoiYnVpbGRraXQuZG9ja2VyZmlsZS52MCJ9LHsiY3JlYXRlZCI6IjIwMjItMDgtMDFUMjA6MDk6MjIuNTA5NDIxNzEyWiIsImNyZWF0ZWRfYnkiOiJBREQgZmlsZS0yLnR4dCAvc29tZWZpbGUtMi50eHQgIyBidWlsZGtpdCIsImNvbW1lbnQiOiJidWlsZGtpdC5kb2NrZXJmaWxlLnYwIn1dLCJvcyI6ImxpbnV4Iiwicm9vdGZzIjp7InR5cGUiOiJsYXllcnMiLCJkaWZmX2lkcyI6WyJzaGEyNTY6ZmI2YmVlY2I3NWIzOWY0YmI4MTNkYmYxNzdlNTAxZWRkNWRkYjNlNjliYjQ1Y2VkZWI3OGM2NzZlZTFiN2E1OSIsInNoYTI1NjozMTliNTg4Y2U2NDI1M2E4N2I1MzNjOGVkMDFjZjAwMjVlMGVhYzk4ZTdiNTE2ZTEyNTMyOTU3ZTEyNDRmZGVjIl19fQ==", "config": "eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiV29ya2luZ0RpciI6Ii8iLCJPbkJ1aWxkIjpudWxsfSwiY3JlYXRlZCI6IjIwMjItMDgtMjVUMTY6MjI6MDguODkxMzY0Mjc4WiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIyLTA4LTI1VDE2OjIyOjA4Ljc2MzMzMDMyM1oiLCJjcmVhdGVkX2J5IjoiQUREIGZpbGUtMS50eHQgL3NvbWVmaWxlLTEudHh0ICMgYnVpbGRraXQiLCJjb21tZW50IjoiYnVpbGRraXQuZG9ja2VyZmlsZS52MCJ9LHsiY3JlYXRlZCI6IjIwMjItMDgtMjVUMTY6MjI6MDguODkxMzY0Mjc4WiIsImNyZWF0ZWRfYnkiOiJBREQgZmlsZS0yLnR4dCAvc29tZWZpbGUtMi50eHQgIyBidWlsZGtpdCIsImNvbW1lbnQiOiJidWlsZGtpdC5kb2NrZXJmaWxlLnYwIn1dLCJvcyI6ImxpbnV4Iiwicm9vdGZzIjp7InR5cGUiOiJsYXllcnMiLCJkaWZmX2lkcyI6WyJzaGEyNTY6NmFmZDFjYjU1OTM5ZDg3YmE0YzI5ODkwN2QwYTUzMDU5YmIzNzQyYzJkNjUzMTQ2NDNlMjQ2NDA3MWNmMGEyZCIsInNoYTI1Njo2NTc5OTdjZmY5YTgzNjEzOTE4NjIzOWJkZmU3NzI1MDIzOWE3MDBkMGVkOTdkNTdlMTAxYzI5NWU4MjQ0MzE5Il19fQ==",
"repoDigests": [], "repoDigests": [],
"architecture": "", "architecture": "",
"os": "" "os": ""
@ -112,7 +112,7 @@
} }
}, },
"schema": { "schema": {
"version": "6.0.0", "version": "6.1.0",
"url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-6.0.0.json" "url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-6.1.0.json"
} }
} }

View File

@ -22,8 +22,8 @@ func newGoBinaryPackage(dep *debug.Module, mainModule, goVersion, architecture s
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
Locations: source.NewLocationSet(locations...), Locations: source.NewLocationSet(locations...),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goVersion, GoCompiledVersion: goVersion,
H1Digest: dep.Sum, H1Digest: dep.Sum,
Architecture: architecture, Architecture: architecture,

View File

@ -143,8 +143,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goCompiledVersion, GoCompiledVersion: goCompiledVersion,
Architecture: archDetails, Architecture: archDetails,
BuildSettings: defaultBuildSettings, BuildSettings: defaultBuildSettings,
@ -190,8 +190,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangBinMetadata{},
}, },
}, },
}, },
@ -233,8 +233,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goCompiledVersion, GoCompiledVersion: goCompiledVersion,
Architecture: archDetails, Architecture: archDetails,
H1Digest: "h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=", H1Digest: "h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=",
@ -285,8 +285,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goCompiledVersion, GoCompiledVersion: goCompiledVersion,
Architecture: archDetails, Architecture: archDetails,
BuildSettings: map[string]string{ BuildSettings: map[string]string{
@ -340,8 +340,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goCompiledVersion, GoCompiledVersion: goCompiledVersion,
Architecture: archDetails, Architecture: archDetails,
H1Digest: "h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=", H1Digest: "h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=",
@ -362,8 +362,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goCompiledVersion, GoCompiledVersion: goCompiledVersion,
Architecture: archDetails, Architecture: archDetails,
H1Digest: "h1:DYssiUV1pBmKqzKsm4mqXx8artqC0Q8HgZsVI3lMsAg=", H1Digest: "h1:DYssiUV1pBmKqzKsm4mqXx8artqC0Q8HgZsVI3lMsAg=",
@ -417,8 +417,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goCompiledVersion, GoCompiledVersion: goCompiledVersion,
Architecture: archDetails, Architecture: archDetails,
H1Digest: "h1:PjhxBct4MZii8FFR8+oeS7QOvxKOTZXgk63EU2XpfJE=", H1Digest: "h1:PjhxBct4MZii8FFR8+oeS7QOvxKOTZXgk63EU2XpfJE=",
@ -438,8 +438,8 @@ func TestBuildGoPkgInfo(t *testing.T) {
}, },
}, },
), ),
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangBinMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangBinMetadata{
GoCompiledVersion: goCompiledVersion, GoCompiledVersion: goCompiledVersion,
Architecture: archDetails, Architecture: archDetails,
H1Digest: "h1:Ihq/mm/suC88gF8WFcVwk+OV6Tq+wyA1O0E5UEvDglI=", H1Digest: "h1:Ihq/mm/suC88gF8WFcVwk+OV6Tq+wyA1O0E5UEvDglI=",

View File

@ -43,8 +43,8 @@ func parseGoModFile(resolver source.FileResolver, _ *generic.Environment, reader
PURL: packageURL(m.Mod.Path, m.Mod.Version), PURL: packageURL(m.Mod.Path, m.Mod.Version),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangModMetadata{
H1Digest: digests[fmt.Sprintf("%s %s", m.Mod.Path, m.Mod.Version)], H1Digest: digests[fmt.Sprintf("%s %s", m.Mod.Path, m.Mod.Version)],
}, },
} }
@ -59,8 +59,8 @@ func parseGoModFile(resolver source.FileResolver, _ *generic.Environment, reader
PURL: packageURL(m.New.Path, m.New.Version), PURL: packageURL(m.New.Path, m.New.Version),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangModMetadata{
H1Digest: digests[fmt.Sprintf("%s %s", m.New.Path, m.New.Version)], H1Digest: digests[fmt.Sprintf("%s %s", m.New.Path, m.New.Version)],
}, },
} }

View File

@ -23,8 +23,8 @@ func TestParseGoMod(t *testing.T) {
Locations: source.NewLocationSet(source.NewLocation("test-fixtures/one-package")), Locations: source.NewLocationSet(source.NewLocation("test-fixtures/one-package")),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangModMetadata{},
}, },
}, },
}, },
@ -39,8 +39,8 @@ func TestParseGoMod(t *testing.T) {
Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")), Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangModMetadata{},
}, },
{ {
Name: "github.com/anchore/go-version", Name: "github.com/anchore/go-version",
@ -49,8 +49,8 @@ func TestParseGoMod(t *testing.T) {
Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")), Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangModMetadata{},
}, },
{ {
Name: "github.com/anchore/stereoscope", Name: "github.com/anchore/stereoscope",
@ -59,8 +59,8 @@ func TestParseGoMod(t *testing.T) {
Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")), Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangModMetadata{},
}, },
{ {
Name: "github.com/bmatcuk/doublestar", Name: "github.com/bmatcuk/doublestar",
@ -69,8 +69,8 @@ func TestParseGoMod(t *testing.T) {
Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")), Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangModMetadata{},
}, },
{ {
Name: "github.com/go-test/deep", Name: "github.com/go-test/deep",
@ -79,8 +79,8 @@ func TestParseGoMod(t *testing.T) {
Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")), Locations: source.NewLocationSet(source.NewLocation("test-fixtures/many-packages")),
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangModMetadata{},
}, },
}, },
}, },
@ -112,8 +112,8 @@ func Test_GoSumHashes(t *testing.T) {
FoundBy: "go-mod-file-cataloger", FoundBy: "go-mod-file-cataloger",
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{}, Metadata: pkg.GolangModMetadata{},
}, },
{ {
Name: "github.com/acarl005/stripansi", Name: "github.com/acarl005/stripansi",
@ -123,8 +123,8 @@ func Test_GoSumHashes(t *testing.T) {
FoundBy: "go-mod-file-cataloger", FoundBy: "go-mod-file-cataloger",
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangModMetadata{
H1Digest: "h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=", H1Digest: "h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=",
}, },
}, },
@ -136,8 +136,8 @@ func Test_GoSumHashes(t *testing.T) {
FoundBy: "go-mod-file-cataloger", FoundBy: "go-mod-file-cataloger",
Language: pkg.Go, Language: pkg.Go,
Type: pkg.GoModulePkg, Type: pkg.GoModulePkg,
MetadataType: pkg.GolangMetadataType, MetadataType: pkg.GolangModMetadataType,
Metadata: pkg.GolangMetadata{ Metadata: pkg.GolangModMetadata{
H1Digest: "h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=", H1Digest: "h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=",
}, },
}, },

View File

@ -1,10 +1,15 @@
package pkg package pkg
// GolangMetadata represents all captured data for a Golang Binary // GolangBinMetadata represents all captured data for a Golang binary
type GolangMetadata struct { type GolangBinMetadata struct {
BuildSettings map[string]string `json:"goBuildSettings,omitempty" cyclonedx:"goBuildSettings"` BuildSettings map[string]string `json:"goBuildSettings,omitempty" cyclonedx:"goBuildSettings"`
GoCompiledVersion string `json:"goCompiledVersion" cyclonedx:"goCompiledVersion"` GoCompiledVersion string `json:"goCompiledVersion" cyclonedx:"goCompiledVersion"`
Architecture string `json:"architecture" cyclonedx:"architecture"` Architecture string `json:"architecture" cyclonedx:"architecture"`
H1Digest string `json:"h1Digest,omitempty" cyclonedx:"h1Digest"` H1Digest string `json:"h1Digest,omitempty" cyclonedx:"h1Digest"`
MainModule string `json:"mainModule,omitempty" cyclonedx:"mainModule"` MainModule string `json:"mainModule,omitempty" cyclonedx:"mainModule"`
} }
// GolangModMetadata represents all captured data for a Golang source scan with go.mod/go.sum
type GolangModMetadata struct {
H1Digest string `json:"h1Digest,omitempty" cyclonedx:"h1Digest"`
}

View File

@ -20,7 +20,8 @@ const (
DotnetDepsMetadataType MetadataType = "DotnetDepsMetadata" DotnetDepsMetadataType MetadataType = "DotnetDepsMetadata"
DpkgMetadataType MetadataType = "DpkgMetadata" DpkgMetadataType MetadataType = "DpkgMetadata"
GemMetadataType MetadataType = "GemMetadata" GemMetadataType MetadataType = "GemMetadata"
GolangMetadataType MetadataType = "GolangMetadata" GolangBinMetadataType MetadataType = "GolangBinMetadata"
GolangModMetadataType MetadataType = "GolangModMetadata"
HackageMetadataType MetadataType = "HackageMetadataType" HackageMetadataType MetadataType = "HackageMetadataType"
JavaMetadataType MetadataType = "JavaMetadata" JavaMetadataType MetadataType = "JavaMetadata"
KbPackageMetadataType MetadataType = "KbPackageMetadata" KbPackageMetadataType MetadataType = "KbPackageMetadata"
@ -47,7 +48,8 @@ var AllMetadataTypes = []MetadataType{
DotnetDepsMetadataType, DotnetDepsMetadataType,
DpkgMetadataType, DpkgMetadataType,
GemMetadataType, GemMetadataType,
GolangMetadataType, GolangBinMetadataType,
GolangModMetadataType,
HackageMetadataType, HackageMetadataType,
JavaMetadataType, JavaMetadataType,
KbPackageMetadataType, KbPackageMetadataType,
@ -74,7 +76,8 @@ var MetadataTypeByName = map[MetadataType]reflect.Type{
DotnetDepsMetadataType: reflect.TypeOf(DotnetDepsMetadata{}), DotnetDepsMetadataType: reflect.TypeOf(DotnetDepsMetadata{}),
DpkgMetadataType: reflect.TypeOf(DpkgMetadata{}), DpkgMetadataType: reflect.TypeOf(DpkgMetadata{}),
GemMetadataType: reflect.TypeOf(GemMetadata{}), GemMetadataType: reflect.TypeOf(GemMetadata{}),
GolangMetadataType: reflect.TypeOf(GolangMetadata{}), GolangBinMetadataType: reflect.TypeOf(GolangBinMetadata{}),
GolangModMetadataType: reflect.TypeOf(GolangModMetadata{}),
HackageMetadataType: reflect.TypeOf(HackageMetadata{}), HackageMetadataType: reflect.TypeOf(HackageMetadata{}),
JavaMetadataType: reflect.TypeOf(JavaMetadata{}), JavaMetadataType: reflect.TypeOf(JavaMetadata{}),
KbPackageMetadataType: reflect.TypeOf(KbPackageMetadata{}), KbPackageMetadataType: reflect.TypeOf(KbPackageMetadata{}),
@ -94,8 +97,8 @@ func CleanMetadataType(typ MetadataType) MetadataType {
if typ == "RpmdbMetadata" { if typ == "RpmdbMetadata" {
return RpmMetadataType return RpmMetadataType
} }
if typ == "GolangBinMetadata" { if typ == "GolangMetadata" {
return GolangMetadataType return GolangBinMetadataType
} }
return typ return typ
} }