use cvssrust::{CVSSScore, CVSS};
use std::env;
fn main() {
let vector = env::args().skip(1).next().expect("Provide CVSS vector");
match CVSS::parse(vector.as_str()) {
Ok(CVSS::V3(cvss)) => {
println!("CVSS v3 vector: {}", cvss.to_string());
println!("CVSS Base score: {}", cvss.base_score().value());
println!("CVSS Base severity: {}", cvss.base_score().severity());
println!("Impact Subscore: {}", cvss.impact_score().value());
println!(
"Exploitability Subscore: {}",
cvss.expoitability_score().value()
);
println!("CVSS Temporal score: {}", cvss.temporal_score().value());
println!(
"CVSS Environmental score: {}",
cvss.environmental_score().value()
);
println!(
"Modified Impact Subscore: {}",
cvss.modified_impact_score().value()
);
println!(
"Modified Exploitability Subscore: {}",
cvss.modified_exploitability_score().value()
);
}
Ok(CVSS::V2(cvss)) => {
println!("CVSS v2 vector: {}", cvss.to_string());
println!("CVSS Base score: {}", cvss.base_score().value());
println!("CVSS Base severity: {}", cvss.base_score().severity());
println!("Impact Subscore: {}", cvss.impact_score().value());
println!(
"Exploitability Subscore: {}",
cvss.expoitability_score().value()
);
println!("CVSS Temporal score: {}", cvss.temporal_score().value());
println!(
"CVSS Environmental score: {}",
cvss.environmental_score().value()
);
}
_ => println!("Could not parse the CVSS vector"),
}
}