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  }