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
cvss_component!(AccessVector {
    Local => L,
    AdjacentNetwork => A,
    Network => N,
});

cvss_component!(AccessComplexity {
    High => H,
    Medium => M,
    Low => L,
});

cvss_component!(Authentication {
    Multiple => M,
    Single => S,
    None => N,
});

cvss_component!(Impact {
    None => N,
    Partial => P,
    Complete => C,
});

cvss_score!(BaseMetric {
    access_vector: AccessVector => AV,
    access_complexity: AccessComplexity => AC,
    authentication: Authentication => Au,
    confidentiality_impact: Impact => C,
    integrity_impact: Impact => I,
    availability_impact: Impact => A,
});