Skip to content

⚙️ CPE Generator

This module provides capabilities for generating, templating, merging and fuzzily generating CPE objects, useful for programmatic construction of CPEs.

🏗️ GenerateCPE

go
func GenerateCPE(part, vendor, product, version string) *CPE

Generates a CPE object from part, vendor, product and version.

ParameterTypeDescription
partstringPart type
vendorstringVendor
productstringProduct name
versionstringVersion
ReturnTypeDescription
#1*CPEThe generated CPE object
go
cpe := cpeskills.GenerateCPE("a", "microsoft", "windows", "10")

📋 GenerateFromTemplate

go
func GenerateFromTemplate(template *CPE, overrides map[string]string) *CPE

Generates a new CPE from a template, applying the field overrides in overrides.

ParameterTypeDescription
template*CPEThe template CPE
overridesmap[string]stringField override map
ReturnTypeDescription
#1*CPEThe new generated CPE object
go
tmpl := cpeskills.MustParse("cpe:2.3:a:microsoft:windows:10:*:*:*:*:*:*:*")
cpe := cpeskills.GenerateFromTemplate(tmpl, map[string]string{"version": "11"})

🛠️ FillDefaults

go
func FillDefaults(cpe *CPE) *CPE

Fills empty fields of a CPE object with default values (e.g. *).

ParameterTypeDescription
cpe*CPEThe CPE object to fill
ReturnTypeDescription
#1*CPEThe filled CPE object
go
cpe := &cpeskills.CPE{Part: *part}
cpe = cpeskills.FillDefaults(cpe)

🔀 MergeCPEs

go
func MergeCPEs(primary, secondary *CPE) *CPE

Merges two CPEs: primary takes precedence, and its empty fields are backfilled from secondary.

ParameterTypeDescription
primary*CPEThe primary CPE (takes precedence)
secondary*CPEThe fallback CPE
ReturnTypeDescription
#1*CPEThe merged CPE object
go
merged := cpeskills.MergeCPEs(primary, secondary)

🌫️ FuzzyGenerateCPE

go
func FuzzyGenerateCPE(part, vendor, product, version string) *CPE

Fuzzily generates a CPE, normalizing and tolerating noisy input.

ParameterTypeDescription
partstringPart type
vendorstringVendor
productstringProduct name
versionstringVersion
ReturnTypeDescription
#1*CPEThe generated CPE object
go
cpe := cpeskills.FuzzyGenerateCPE("a", "Microsoft", "Windows 10", "10")

🎲 RandomCPE

go
func RandomCPE() *CPE

Generates a random CPE object, useful for tests.

ReturnTypeDescription
#1*CPEA random CPE object
go
cpe := cpeskills.RandomCPE()

📥 Parse

go
func Parse(cpeStr string) (*CPE, error)

General-purpose parse entry that auto-detects the 2.2 or 2.3 form.

ParameterTypeDescription
cpeStrstringThe CPE string
ReturnTypeDescription
#1*CPEThe parsed CPE object
#2errorAn error if parsing fails
go
cpe, err := cpeskills.Parse("cpe:2.3:a:microsoft:windows:10:*:*:*:*:*:*:*")

🧭 Generator Map

Released under the MIT License.