aboutsummaryrefslogtreecommitdiff
path: root/internal/cpedict/cpedict.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cpedict/cpedict.go')
-rw-r--r--internal/cpedict/cpedict.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/internal/cpedict/cpedict.go b/internal/cpedict/cpedict.go
new file mode 100644
index 0000000..0b5f77b
--- /dev/null
+++ b/internal/cpedict/cpedict.go
@@ -0,0 +1,46 @@
+// CPE 2.3 dictionary parser.
+//
+// The official NVD CPE dictionary is available here:
+// https://nvd.nist.gov/products/cpe
+package cpedict
+
+import "time"
+
+// Dictionary generator information.
+type Generator struct {
+ ProductName string `xml:"product_name"` // Product name.
+ ProductVersion string `xml:"product_version"` // Product version.
+ SchemaVersion string `xml:"schema_version"` // Schema version.
+ Timestamp time.Time `xml:"timestamp"` // Generation timestamp.
+}
+
+// Dictionary item title.
+type Title struct {
+ Lang string `xml:"lang,attr"` // language code
+ Text string `xml:",chardata"` // value
+}
+
+// Dictionary item reference.
+type Reference struct {
+ Href string `xml:"href,attr"` // Link
+ Text string `xml:",chardata"` // Text
+}
+
+// CPE 2.3 item attributes.
+type Cpe23Item struct {
+ Name string `xml:"name,attr"` // CPE 2.3 formatting string.
+}
+
+// Dictionary item.
+type Item struct {
+ CpeUri string `xml:"name,attr"` // CPE URI.
+ Cpe23Item Cpe23Item `xml:"cpe23-item"` // CPE 2.3 formatting string.
+ Titles []Title `xml:"title"` // Item titles.
+ References []Reference `xml:"references>reference"` // References.
+}
+
+// CPE dictionary.
+type Dictionary struct {
+ Generator Generator `xml:"generator"` // Dictionary generator.
+ Items []Item `xml:"cpe-item"` // Dictionary items.
+}