00001
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef _CVSSCALC_H_
00036 #define _CVSSCALC_H_
00037
00038 #include <stdbool.h>
00039
00044 struct cvss_entry;
00045
00046
00060 const char* cvss_entry_get_score(const struct cvss_entry * entry);
00067 const char* cvss_entry_get_AV(const struct cvss_entry * entry);
00074 const char* cvss_entry_get_AC(const struct cvss_entry * entry);
00081 const char* cvss_entry_get_authentication(const struct cvss_entry * entry);
00088 const char* cvss_entry_get_imp_confidentiality(const struct cvss_entry * entry);
00095 const char* cvss_entry_get_imp_integrity(const struct cvss_entry * entry);
00102 const char* cvss_entry_get_imp_availability(const struct cvss_entry * entry);
00109 const char* cvss_entry_get_source(const struct cvss_entry * entry);
00116 const char* cvss_entry_get_generated(const struct cvss_entry * entry);
00117
00118
00121
00136 bool cvss_entry_set_score(struct cvss_entry *entry, const char *new_score);
00144 bool cvss_entry_set_AV(struct cvss_entry *entry, const char *new_AV);
00152 bool cvss_entry_set_AC(struct cvss_entry *entry, const char *new_AC);
00160 bool cvss_entry_set_authentication(struct cvss_entry *entry, const char *new_authentication);
00168 bool cvss_entry_set_imp_confidentiality(struct cvss_entry *entry, const char *new_item);
00176 bool cvss_entry_set_imp_integrity(struct cvss_entry *entry, const char *new_item);
00184 bool cvss_entry_set_imp_availability(struct cvss_entry *entry, const char *new_item);
00192 bool cvss_entry_set_source(struct cvss_entry *entry, const char *new_source);
00200 bool cvss_entry_set_generated(struct cvss_entry *entry, const char *new_generated);
00201
00202
00210 struct cvss_entry * cvss_entry_new(void);
00211
00217 struct cvss_entry * cvss_entry_clone(struct cvss_entry * old_entry);
00218
00224 void cvss_entry_free(struct cvss_entry * entry);
00225
00227
00228 typedef enum {
00229 AV_LOCAL,
00230 AV_ADJACENT_NETWORK,
00231 AV_NETWORK
00232 } cvss_access_vector_t;
00233
00235
00238 typedef enum {
00239 AC_HIGH,
00240 AC_MEDIUM,
00241 AC_LOW
00242 } cvss_access_complexity_t;
00243
00245
00248 typedef enum {
00249 AU_NONE,
00250 AU_SINGLE_INSTANCE,
00251 AU_MULTIPLE_INSTANCE
00252 } cvss_authentication_t;
00253
00255
00258 typedef enum {
00259 CI_NONE,
00260 CI_PARTIAL,
00261 CI_COMPLETE
00262 } cvss_conf_impact_t;
00263
00265
00268 typedef enum {
00269 II_NONE,
00270 II_PARTIAL,
00271 II_COMPLETE
00272 } cvss_integ_impact_t;
00273
00275
00278 typedef enum {
00279 AI_NONE,
00280 AI_PARTIAL,
00281 AI_COMPLETE
00282 } cvss_avail_impact_t;
00283
00285
00288 typedef enum {
00289 EX_UNPROVEN,
00290 EX_PROOF_OF_CONCEPT,
00291 EX_FUNCTIONAL,
00292 EX_HIGH,
00293 EX_NOT_DEFINED
00294 } cvss_exploitability_t;
00295
00297
00300 typedef enum {
00301 RL_OFFICIAL_FIX,
00302 RL_TEMPORARY_FIX,
00303 RL_WORKAROUND,
00304 RL_UNAVAILABLE,
00305 RL_NOT_DEFINED
00306 } cvss_remediation_level_t;
00307
00309
00313 typedef enum {
00314 RC_UNCONFIRMED,
00315 RC_UNCORROBORATED,
00316 RC_CONFIRMED,
00317 RC_NOT_DEFINED
00318 } cvss_report_confidence_t;
00319
00321
00324 typedef enum {
00325 CD_NONE,
00326 CD_LOW,
00327 CD_LOW_MEDIUM,
00328 CD_MEDIUM_HIGH,
00329 CD_HIGH,
00330 CD_NOT_DEFINED
00331 } cvss_collateral_damage_potential_t;
00332
00334
00338 typedef enum {
00339 TD_NONE,
00340 TD_LOW,
00341 TD_MEDIUM,
00342 TD_HIGH,
00343 TD_NOT_DEFINED
00344 } cvss_target_distribution_t;
00345
00347
00351 typedef enum {
00352 CR_LOW,
00353 CR_MEDIUM,
00354 CR_HIGH,
00355 CR_NOT_DEFINED
00356 } cvss_conf_req_t;
00357
00359
00363 typedef enum {
00364 IR_LOW,
00365 IR_MEDIUM,
00366 IR_HIGH,
00367 IR_NOT_DEFINED
00368 } cvss_integ_req_t;
00369
00371
00375 typedef enum {
00376 AR_LOW,
00377 AR_MEDIUM,
00378 AR_HIGH,
00379 AR_NOT_DEFINED
00380 } cvss_avail_req_t;
00381
00382
00383
00396 int cvss_base_score(cvss_access_vector_t ave, cvss_access_complexity_t ace, cvss_authentication_t aue,
00397 cvss_conf_impact_t cie, cvss_integ_impact_t iie, cvss_avail_impact_t aie,
00398 double *base_score,
00399 double *impact_score,
00400 double *exploitability_score);
00401
00406 int cvss_temp_score(cvss_exploitability_t exe, cvss_remediation_level_t rle,
00407 cvss_report_confidence_t rce, double base_score,
00408 double *temporal_score);
00409
00419 int cvss_env_score(cvss_collateral_damage_potential_t cde, cvss_target_distribution_t tde,
00420 cvss_conf_req_t cre, cvss_integ_req_t ire,
00421 cvss_avail_req_t are, cvss_access_vector_t ave,
00422 cvss_access_complexity_t ace, cvss_authentication_t aue,
00423 cvss_conf_impact_t cie, cvss_integ_impact_t iie,
00424 cvss_avail_impact_t aie, cvss_exploitability_t exe,
00425 cvss_remediation_level_t rle, cvss_report_confidence_t rce,
00426 double *enviromental_score);
00431 int cvss_base_score_struct(const struct cvss_entry * entry,
00432 double *base_score,
00433 double *impact_score,
00434 double *exploitability_score);
00435
00441 const char * cvss_model_supported(void);
00442
00443
00447 #endif