<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <title>Open SCAP Library: cvss.c File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Open SCAP Library </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.1.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_454dc13ca92927646d4326da74f1a219.html">CVSS</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">cvss.c File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Interface to Common Vulnerability Scoring System Version 2. <a href="#details">More...</a></p> <div class="textblock"><code>#include <stdlib.h></code><br/> <code>#include <math.h></code><br/> <code>#include <string.h></code><br/> <code>#include "<a class="el" href="cvss__score_8h_source.html">public/cvss_score.h</a>"</code><br/> <code>#include "<a class="el" href="cvss__priv_8h_source.html">cvss_priv.h</a>"</code><br/> <code>#include "common/elements.h"</code><br/> </div><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcvss__keytab__entry.html">cvss_keytab_entry</a></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcvss__valtab__entry.html">cvss_valtab_entry</a></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a3e748899f09835d9d1730c38a523e8a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e748899f09835d9d1730c38a523e8a5"></a> #define </td><td class="memItemRight" valign="bottom"><b>CVSS_SUPPORTED</b>   "2.0"</td></tr> <tr class="memitem:a442e0ae62c28de3d8a1e152c9529e033"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a442e0ae62c28de3d8a1e152c9529e033"></a> #define </td><td class="memItemRight" valign="bottom"><b>NS_VULN_STR</b>   BAD_CAST "vuln"</td></tr> <tr class="memitem:a8c7c21584cb33ebf2f1222f7efd4890e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c7c21584cb33ebf2f1222f7efd4890e"></a> #define </td><td class="memItemRight" valign="bottom"><b>NS_CVSS_STR</b>   BAD_CAST "cvss"</td></tr> <tr class="memitem:a02b991289e263babef2330311f715b5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a02b991289e263babef2330311f715b5d"></a> #define </td><td class="memItemRight" valign="bottom"><b>NS_VULN_URI</b>   BAD_CAST "http://scap.nist.gov/schema/vulnerability/0.4"</td></tr> <tr class="memitem:a66b9b8bd8063bb861572d1cfe57990cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66b9b8bd8063bb861572d1cfe57990cc"></a> #define </td><td class="memItemRight" valign="bottom"><b>NS_CVSS_URI</b>   BAD_CAST "http://scap.nist.gov/schema/cvss-v2/0.2"</td></tr> <tr class="memitem:a89978da6c974a532126a121284ace1f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89978da6c974a532126a121284ace1f2"></a> #define </td><td class="memItemRight" valign="bottom"><b>CVSS_W</b>(key)   (cvss_impact_entry(impact, CVSS_KEY_##key)->weight)</td></tr> <tr class="memitem:ae2fd2345c60c963da3c399f68c033c2d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>CVSS_METRIC_ACCESSORS_GEN</b>(cat, key, type)</td></tr> <tr class="memitem:a2a6192b8a800edce9c8939aec598b2a7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>CVSS_METRIC_ACCESSORS_CIA</b>(cat, key)</td></tr> <tr class="memitem:ad6bf26542bf66c04155d11c5b82bc2af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6bf26542bf66c04155d11c5b82bc2af"></a> #define </td><td class="memItemRight" valign="bottom"><b>CVSS_METRIC_ACCESSORS</b>(cat, key)   CVSS_METRIC_ACCESSORS_GEN(cat, key, key)</td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a6e34c2cf9f7bc534b67a58afbaff4ec8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e34c2cf9f7bc534b67a58afbaff4ec8"></a> typedef float(* </td><td class="memItemRight" valign="bottom"><b>cvss_score_func</b> )(const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *)</td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga37acc9c7a18fe24bb450474b666bd040"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga37acc9c7a18fe24bb450474b666bd040"></a> const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__CVSS.html#ga37acc9c7a18fe24bb450474b666bd040">cvss_model_supported</a> (void)</td></tr> <tr class="memdesc:ga37acc9c7a18fe24bb450474b666bd040"><td class="mdescLeft"> </td><td class="mdescRight">Get supported version of CVSS XML. <br/></td></tr> <tr class="memitem:ac9f4f4f5b3845e4e8d643ce7459bea9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9f4f4f5b3845e4e8d643ce7459bea9e"></a> struct <a class="el" href="structcvss__impact.html">cvss_impact</a> * </td><td class="memItemRight" valign="bottom"><b>cvss_impact_new</b> (void)</td></tr> <tr class="memitem:a5cff3b5cf42b46643183b519b6fa7b2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cff3b5cf42b46643183b519b6fa7b2d"></a> struct <a class="el" href="structcvss__impact.html">cvss_impact</a> * </td><td class="memItemRight" valign="bottom"><b>cvss_impact_new_from_vector</b> (const char *cvss_vector)</td></tr> <tr class="memitem:a5ffa9a5ad8859037926279681ad90742"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ffa9a5ad8859037926279681ad90742"></a> struct <a class="el" href="structcvss__impact.html">cvss_impact</a> * </td><td class="memItemRight" valign="bottom"><b>cvss_impact_new_from_xml</b> (xmlTextReaderPtr reader)</td></tr> <tr class="memitem:aad0ac9f8f6806248b22418d6c878038e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0ac9f8f6806248b22418d6c878038e"></a> struct <a class="el" href="structcvss__impact.html">cvss_impact</a> * </td><td class="memItemRight" valign="bottom"><b>cvss_impact_clone</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *imp)</td></tr> <tr class="memitem:ac7ffbf69f9ef735b27e93544ccc07022"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7ffbf69f9ef735b27e93544ccc07022"></a> bool </td><td class="memItemRight" valign="bottom"><b>cvss_impact_export</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *imp, xmlTextWriterPtr writer)</td></tr> <tr class="memitem:a8f28de3648735ca232a84880400c5621"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f28de3648735ca232a84880400c5621"></a> bool </td><td class="memItemRight" valign="bottom"><b>cvss_metrics_is_valid</b> (const struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> *metrics)</td></tr> <tr class="memitem:ac941cc7a6d0c7b89ce05f54112490bf3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac941cc7a6d0c7b89ce05f54112490bf3"></a> char * </td><td class="memItemRight" valign="bottom"><b>cvss_impact_to_vector</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:af2daea84307f3321f3b26456dc285479"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2daea84307f3321f3b26456dc285479"></a> void </td><td class="memItemRight" valign="bottom"><b>cvss_impact_free</b> (struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a4e76067eabe073e01b9da51e4af4ee2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e76067eabe073e01b9da51e4af4ee2b"></a> bool </td><td class="memItemRight" valign="bottom"><b>cvss_impact_set_metrics</b> (struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact, struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> *metrics)</td></tr> <tr class="memitem:gabaf0506b95b427529df374a61767ed7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabaf0506b95b427529df374a61767ed7e"></a> float </td><td class="memItemRight" valign="bottom"><a class="el" href="group__CVSS.html#gabaf0506b95b427529df374a61767ed7e">cvss_round</a> (float x)</td></tr> <tr class="memdesc:gabaf0506b95b427529df374a61767ed7e"><td class="mdescLeft"> </td><td class="mdescRight">Round <em>x</em> to one decimal place as described in CVSS standard. <br/></td></tr> <tr class="memitem:a5ea76c907b47ef3776f7349b3e19da1c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ea76c907b47ef3776f7349b3e19da1c"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_base_exploitability_subscore</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a4d5cac4e80c66662c5917197cb30c7fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d5cac4e80c66662c5917197cb30c7fd"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_base_impact_subscore</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:aa630c2b440a4f10b080e8110f1d36ff1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa630c2b440a4f10b080e8110f1d36ff1"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_base_score</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a29e294c81b92bc9e3c96251d5947b762"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29e294c81b92bc9e3c96251d5947b762"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_temporal_multiplier</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a942d9c918f635e2c2c8a573a052512ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a942d9c918f635e2c2c8a573a052512ea"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_temporal_score</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a74791a03bcfa464fed79c5fbee27617b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74791a03bcfa464fed79c5fbee27617b"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_base_adjusted_impact_subscore</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a614f2674f030c2815493b44cb0ecef39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a614f2674f030c2815493b44cb0ecef39"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_adjusted_base_score</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a6380efff91cd073a649293fa609ca619"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6380efff91cd073a649293fa609ca619"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_adjusted_temporal_score</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a0d6c4966bb9a14ccada194a8c0566eae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d6c4966bb9a14ccada194a8c0566eae"></a> float </td><td class="memItemRight" valign="bottom"><b>cvss_impact_environmental_score</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact)</td></tr> <tr class="memitem:a12b8b7daf51d54110e7caf1bacdd7547"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12b8b7daf51d54110e7caf1bacdd7547"></a> void </td><td class="memItemRight" valign="bottom"><b>cvss_impact_describe</b> (const struct <a class="el" href="structcvss__impact.html">cvss_impact</a> *impact, FILE *f)</td></tr> <tr class="memitem:a74953322bdeabc6852f1399b6ec0702e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74953322bdeabc6852f1399b6ec0702e"></a> struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> * </td><td class="memItemRight" valign="bottom"><b>cvss_metrics_new</b> (enum <a class="el" href="group__CVSS.html#gafebb951da0f6dafea63d34d9eafd3ba0">cvss_category</a> category)</td></tr> <tr class="memitem:a8b1a460b8ca0ccb48b1639c793e8cbd2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b1a460b8ca0ccb48b1639c793e8cbd2"></a> struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> * </td><td class="memItemRight" valign="bottom"><b>cvss_metrics_new_from_xml</b> (xmlTextReaderPtr reader)</td></tr> <tr class="memitem:ab98869ab6f3cf99ecbee0fa89a66da6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab98869ab6f3cf99ecbee0fa89a66da6c"></a> struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> * </td><td class="memItemRight" valign="bottom"><b>cvss_metrics_clone</b> (const struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> *met)</td></tr> <tr class="memitem:a9e9942f31e60eba57338f0e513c2d2d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e9942f31e60eba57338f0e513c2d2d0"></a> bool </td><td class="memItemRight" valign="bottom"><b>cvss_metrics_export</b> (const struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> *m, xmlTextWriterPtr writer)</td></tr> <tr class="memitem:a2cfe2ebaa701609723c8fb2c900fefcb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cfe2ebaa701609723c8fb2c900fefcb"></a> void </td><td class="memItemRight" valign="bottom"><b>cvss_metrics_free</b> (struct <a class="el" href="structcvss__metrics.html">cvss_metrics</a> *metrics)</td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>Interface to Common Vulnerability Scoring System Version 2. </p> <p>See details at <a href="http://nvd.nist.gov/cvss.cfm">http://nvd.nist.gov/cvss.cfm</a> </p> </div><hr/><h2>Macro Definition Documentation</h2> <a class="anchor" id="a2a6192b8a800edce9c8939aec598b2a7"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CVSS_METRIC_ACCESSORS_CIA</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">cat, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line">CVSS_METRIC_ACCESSORS_GEN(cat, confidentiality_##key, cia_##key) \</div> <div class="line"> CVSS_METRIC_ACCESSORS_GEN(cat, integrity_##key, cia_##key) CVSS_METRIC_ACCESSORS_GEN(cat, availability_##key, cia_##key)</div> </div><!-- fragment --> </div> </div> <a class="anchor" id="ae2fd2345c60c963da3c399f68c033c2d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CVSS_METRIC_ACCESSORS_GEN</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">cat, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">type </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"><span class="keyword">enum</span> cvss_##type cvss_metrics_get_##key(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structcvss__metrics.html" title="CVSS metrics.">cvss_metrics</a>* metrics) \</div> <div class="line"> { <span class="keywordflow">if</span> (metrics->category != CVSS_##cat) <span class="keywordflow">return</span> 0; <span class="keywordflow">return</span> metrics->metrics.cat[CVSS_KEY_IDX(CVSS_KEY_##key)]; } \</div> <div class="line"> bool cvss_metrics_set_##key(<span class="keyword">struct</span> <a class="code" href="structcvss__metrics.html" title="CVSS metrics.">cvss_metrics</a>* metrics, <span class="keyword">enum</span> cvss_##type newval) \</div> <div class="line"> { <span class="keywordflow">if</span> (metrics->category != CVSS_##cat) <span class="keywordflow">return</span> <span class="keyword">false</span>; metrics->metrics.cat[CVSS_KEY_IDX(CVSS_KEY_##key)] = newval; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div> </div><!-- fragment --> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.1.1 </small></address> </body> </html>