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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//! Rust implementation of the Common Vulnerability Scoring System (v2 / v3.0 / v3.1).
//!
//! Supports parsing, generation and score calculation (base, temporal, environmental)
//! for CVSS vectors v2/v3.0/v3.1
//!
//! Current CVSS version is v3.1, but v3.0 and v2 are still in use.
//!
//! ## Example
//! ```rust
//! use cvssrust::v3::V3Vector;
//! use cvssrust::CVSSScore;
//! use std::str::FromStr;
//!
//! let cvss_str = "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N/E:P/RL:W/RC:C";
//! let cvss = V3Vector::from_str(cvss_str).unwrap();
//!
//! assert_eq!(cvss.to_string(), String::from(cvss_str));
//! assert_eq!(cvss.base_score().value(), 6.1);
//! assert_eq!(cvss.base_score().severity().to_string(), "Medium");
//! assert_eq!(cvss.temporal_score().value(), 5.6);
//! ```
//!
extern crate serde;
pub use ;
pub use Display;
pub use FromStr;
use V2Vector;
use V3Vector;
/// Enum type and parser for CVSS of all supported versions.
///
/// ```
/// use cvssrust::CVSS;
///
/// let vector = "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N";
/// match CVSS::parse(vector) {
/// Ok(CVSS::V3(cvss)) => {
/// println!("CVSS v3 vector: {}", cvss.to_string());
/// },
/// Ok(CVSS::V2(cvss)) => {
/// println!("CVSS v2 vector: {}", cvss.to_string());
/// },
/// _ => println!("Could not parse the CVSS vector"),
/// }
/// ```
///