github.com/chainreactors/fingers@v1.2.1/common/attributes.go (about) 1 package common 2 3 import "github.com/facebookincubator/nvdtools/wfn" 4 5 func NewAttributesWithAny() *Attributes { 6 return &Attributes{} 7 } 8 9 func NewAttributesWithCPE(s string) *Attributes { 10 attr, err := wfn.Parse(s) 11 if err != nil { 12 return nil 13 } 14 return &Attributes{ 15 Part: attr.Part, 16 Vendor: attr.Vendor, 17 Product: attr.Product, 18 Version: attr.Version, 19 Update: attr.Update, 20 Edition: attr.Edition, 21 SWEdition: attr.SWEdition, 22 TargetSW: attr.TargetSW, 23 TargetHW: attr.TargetHW, 24 Other: attr.Other, 25 Language: attr.Language, 26 } 27 } 28 29 type Attributes struct { 30 Part string `json:"part,omitempty" yaml:"part" jsonschema:"nullable,title=Part,description=Component part identifier"` 31 Vendor string `json:"vendor,omitempty" yaml:"vendor" jsonschema:"nullable,title=Vendor,description=Vendor or manufacturer name"` 32 Product string `json:"product,omitempty" yaml:"product" jsonschema:"nullable,title=Product,description=Product name"` 33 Version string `json:"version,omitempty" yaml:"version,omitempty" jsonschema:"nullable,title=Version,description=Product version"` 34 Update string `json:"update,omitempty" yaml:"update,omitempty" jsonschema:"nullable,title=Update,description=Product update version"` 35 Edition string `json:"edition,omitempty" yaml:"edition,omitempty" jsonschema:"nullable,title=Edition,description=Product edition"` 36 SWEdition string `json:"sw_edition,omitempty" yaml:"sw_edition,omitempty" jsonschema:"nullable,title=Software Edition,description=Software edition"` 37 TargetSW string `json:"target_sw,omitempty" yaml:"target_sw,omitempty" jsonschema:"nullable,title=Target Software,description=Target software"` 38 TargetHW string `json:"target_hw,omitempty" yaml:"target_hw,omitempty" jsonschema:"nullable,title=Target Hardware,description=Target hardware"` 39 Other string `json:"other,omitempty" yaml:"other,omitempty" jsonschema:"nullable,title=Other,description=Other attributes"` 40 Language string `json:"language,omitempty" yaml:"language,omitempty" jsonschema:"nullable,title=Language,description=Language identifier"` 41 } 42 43 func (a *Attributes) WFN() *wfn.Attributes { 44 return &wfn.Attributes{ 45 Part: a.Part, 46 Vendor: a.Vendor, 47 Product: a.Product, 48 Version: a.Version, 49 Update: a.Update, 50 Edition: a.Edition, 51 SWEdition: a.SWEdition, 52 TargetSW: a.TargetSW, 53 TargetHW: a.TargetHW, 54 Other: a.Other, 55 } 56 } 57 58 func (a *Attributes) URI() string { 59 return a.WFN().BindToURI() 60 } 61 62 func (a *Attributes) String() string { 63 return a.WFN().BindToFmtString() 64 } 65 66 func (a *Attributes) WFNString() string { 67 return a.WFN().String() 68 }