/
model.go
54 lines (45 loc) · 1.5 KB
/
model.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package vul
import (
"time"
)
const SchemaVersion = 2
type ScanReport struct {
SchemaVersion int
Results []ScanResult `json:"Results"`
}
type ScanResult struct {
Target string `json:"Target"`
Vulnerabilities []Vulnerability `json:"Vulnerabilities"`
}
type Metadata struct {
NextUpdate time.Time `json:"NextUpdate"`
UpdatedAt time.Time `json:"UpdatedAt"`
}
type VersionInfo struct {
Version string `json:"Version,omitempty"`
VulnerabilityDB *Metadata `json:"VulnerabilityDB"`
}
type Layer struct {
Digest string `json:"Digest"`
DiffID string `json:"DiffID"`
}
type CVSSInfo struct {
V2Vector string `json:"V2Vector,omitempty"`
V3Vector string `json:"V3Vector,omitempty"`
V2Score *float32 `json:"V2Score,omitempty"`
V3Score *float32 `json:"V3Score,omitempty"`
}
type Vulnerability struct {
VulnerabilityID string `json:"VulnerabilityID"`
PkgName string `json:"PkgName"`
InstalledVersion string `json:"InstalledVersion"`
FixedVersion string `json:"FixedVersion"`
Title string `json:"Title"`
Description string `json:"Description"`
Severity string `json:"Severity"`
References []string `json:"References"`
PrimaryURL string `json:"PrimaryURL"`
Layer *Layer `json:"Layer"`
CVSS map[string]CVSSInfo `json:"CVSS"`
CweIDs []string `json:"CweIDs"`
}