aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spdx/common/ext_package_manager.go13
-rw-r--r--spdx/v2_1/package.go2
-rw-r--r--tvloader/parser2v1/parse_package.go4
-rw-r--r--tvloader/parser2v1/parse_package_test.go8
4 files changed, 20 insertions, 7 deletions
diff --git a/spdx/common/ext_package_manager.go b/spdx/common/ext_package_manager.go
new file mode 100644
index 0000000..6e769ce
--- /dev/null
+++ b/spdx/common/ext_package_manager.go
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+
+package common
+
+// ReferenceType is an [idstring] as defined in Appendix VI;
+type ReferenceType string
+
+// *Type is the enumerable of ReferenceType
+const (
+ Cpe23Type ReferenceType = "cpe23Type"
+ PurlType ReferenceType = "purl"
+ Ref2Type ReferenceType = "LocationRef-acmeforge"
+)
diff --git a/spdx/v2_1/package.go b/spdx/v2_1/package.go
index 4bf5636..3abc831 100644
--- a/spdx/v2_1/package.go
+++ b/spdx/v2_1/package.go
@@ -108,7 +108,7 @@ type PackageExternalReference struct {
// type is an [idstring] as defined in Appendix VI;
// called RefType here due to "type" being a Golang keyword
- RefType string `json:"referenceType"`
+ RefType common.ReferenceType `json:"referenceType"`
// locator is a unique string to access the package-specific
// info, metadata or content within the target location
diff --git a/tvloader/parser2v1/parse_package.go b/tvloader/parser2v1/parse_package.go
index 7a3e2a8..24f791a 100644
--- a/tvloader/parser2v1/parse_package.go
+++ b/tvloader/parser2v1/parse_package.go
@@ -200,7 +200,7 @@ func extractCodeAndExcludes(value string) common.PackageVerificationCode {
return common.PackageVerificationCode{Value: code, ExcludedFiles: []string{fileName}}
}
-func extractPackageExternalReference(value string) (string, string, string, error) {
+func extractPackageExternalReference(value string) (string, common.ReferenceType, string, error) {
sp := strings.Split(value, " ")
// remove any that are just whitespace
keepSp := []string{}
@@ -214,5 +214,5 @@ func extractPackageExternalReference(value string) (string, string, string, erro
if len(keepSp) != 3 {
return "", "", "", fmt.Errorf("expected 3 elements, got %d", len(keepSp))
}
- return keepSp[0], keepSp[1], keepSp[2], nil
+ return keepSp[0], common.ReferenceType(keepSp[1]), keepSp[2], nil
}
diff --git a/tvloader/parser2v1/parse_package_test.go b/tvloader/parser2v1/parse_package_test.go
index 7189ba3..0a535ed 100644
--- a/tvloader/parser2v1/parse_package_test.go
+++ b/tvloader/parser2v1/parse_package_test.go
@@ -477,12 +477,12 @@ func TestParser2_1CanParsePackageTags(t *testing.T) {
// Package External References and Comments
ref1 := "SECURITY cpe23Type cpe:2.3:a:pivotal_software:spring_framework:4.1.0:*:*:*:*:*:*:*"
ref1Category := "SECURITY"
- ref1Type := "cpe23Type"
+ ref1Type := common.Cpe23Type
ref1Locator := "cpe:2.3:a:pivotal_software:spring_framework:4.1.0:*:*:*:*:*:*:*"
ref1Comment := "this is comment #1"
ref2 := "OTHER LocationRef-acmeforge acmecorp/acmenator/4.1.3alpha"
ref2Category := "OTHER"
- ref2Type := "LocationRef-acmeforge"
+ ref2Type := common.Ref2Type
ref2Locator := "acmecorp/acmenator/4.1.3alpha"
ref2Comment := "this is comment #2"
err = parser.parsePairFromPackage2_1("ExternalRef", ref1)
@@ -1025,7 +1025,7 @@ func TestCanCheckAndExtractExcludesFilenameAndCode(t *testing.T) {
func TestCanExtractPackageExternalReference(t *testing.T) {
ref1 := "SECURITY cpe23Type cpe:2.3:a:pivotal_software:spring_framework:4.1.0:*:*:*:*:*:*:*"
category := "SECURITY"
- refType := "cpe23Type"
+ refType := common.Cpe23Type
location := "cpe:2.3:a:pivotal_software:spring_framework:4.1.0:*:*:*:*:*:*:*"
gotCategory, gotRefType, gotLocation, err := extractPackageExternalReference(ref1)
@@ -1046,7 +1046,7 @@ func TestCanExtractPackageExternalReference(t *testing.T) {
func TestCanExtractPackageExternalReferenceWithExtraWhitespace(t *testing.T) {
ref1 := " SECURITY \t cpe23Type cpe:2.3:a:pivotal_software:spring_framework:4.1.0:*:*:*:*:*:*:* \t "
category := "SECURITY"
- refType := "cpe23Type"
+ refType := common.Cpe23Type
location := "cpe:2.3:a:pivotal_software:spring_framework:4.1.0:*:*:*:*:*:*:*"
gotCategory, gotRefType, gotLocation, err := extractPackageExternalReference(ref1)