base_score/
base-score.rs

1//! Print score and base score for several vectors.
2//!
3//! # Description
4//!
5//! The `base_score()` method allows you to get the base score for [CVSS
6//! v2][cvss-v2] and [CVSS v3][cvss-v3] vectors.  For [CVSS v4][cvss-v4]
7//! vectors the score returned by `base_score()` is identical to the
8//! score returned by `Score::from()`.
9//!
10//! # Usage
11//!
12//! ```sh
13//! cargo run --example base-score
14//! ```
15//!
16//! [cvss-v2]: https://www.first.org/cvss/v2/guide
17//!   "CVSS v2.0 Documentation"
18//! [cvss-v3]: https://www.first.org/cvss/v3-1/specification-document
19//!   "CVSS v3.1 Specification"
20//! [cvss-v4]: https://www.first.org/cvss/v4-0/specification-document
21//!   "CVSS v4.0 Specification"
22
23use polycvss::{Err, Vector, Score};
24
25fn main() -> Result<(), Err> {
26  // vector strings
27  let strs = vec!(
28	  "AV:N/AC:L/Au:N/C:C/I:C/A:C/E:F/RL:OF/RC:C/CDP:H/TD:H/CR:M/IR:M/AR:L",
29    "CVSS:3.1/AV:P/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:H/E:H/RL:W/AR:L/MAC:H/MA:L",
30    "CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N",
31  );
32
33  for s in strs {
34    let vec: Vector = s.parse()?; // parse vector string
35    let score = Score::from(vec); // get score
36    let base_score = vec.base_score(); // get base score
37    println!("{score} {base_score} {s}"); // print score, base score, and string
38  }
39
40  Ok(())
41}