123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164 |
- <!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"/>
- <meta name="generator" content="Doxygen 1.8.13"/>
- <meta name="viewport" content="width=device-width, initial-scale=1"/>
- <title>tpm2-tss: Policy calculation module</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="navtree.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="resize.js"></script>
- <script type="text/javascript" src="navtreedata.js"></script>
- <script type="text/javascript" src="navtree.js"></script>
- <script type="text/javascript">
- $(document).ready(initResizable);
- </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 id="projectalign" style="padding-left: 0.5em;">
- <div id="projectname">tpm2-tss
-  <span id="projectnumber">3.2.0</span>
- </div>
- <div id="projectbrief">TPM Software stack 2.0 TCG spec compliant implementation</div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.8.13 -->
- <script type="text/javascript" src="menudata.js"></script>
- <script type="text/javascript" src="menu.js"></script>
- <script type="text/javascript">
- $(function() {
- initMenu('',false,false,'search.php','Search');
- });
- </script>
- <div id="main-nav"></div>
- </div><!-- top -->
- <div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
- </div>
- <script type="text/javascript">
- $(document).ready(function(){initNavTree('group__ifapi__policy.html','');});
- </script>
- <div id="doc-content">
- <div class="header">
- <div class="summary">
- <a href="#func-members">Functions</a> </div>
- <div class="headertitle">
- <div class="title">Policy calculation module<div class="ingroups"><a class="el" href="group__fapi.html">Feature API</a> » <a class="el" href="group__ifapi.html">Internals of Feature API</a></div></div> </div>
- </div><!--header-->
- <div class="contents">
- <table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
- Functions</h2></td></tr>
- <tr class="memitem:ga0dd62193830c4656f409ce6102cb3568"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga0dd62193830c4656f409ce6102cb3568">ifapi_calculate_tree</a> (<a class="el" href="struct_f_a_p_i___c_o_n_t_e_x_t.html">FAPI_CONTEXT</a> *context, const char *policyPath, <a class="el" href="struct_t_p_m_s___p_o_l_i_c_y.html">TPMS_POLICY</a> *policy, TPMI_ALG_HASH hash_alg, size_t *digest_idx, size_t *hash_size)</td></tr>
- <tr class="separator:ga0dd62193830c4656f409ce6102cb3568"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga959cdbfee441db40e08a25a6b5508312"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga959cdbfee441db40e08a25a6b5508312">ifapi_calculate_policy</a> (<a class="el" href="struct_t_p_m_l___p_o_l_i_c_y_e_l_e_m_e_n_t_s.html">TPML_POLICYELEMENTS</a> *policy, TPML_DIGEST_VALUES *policyDigests, TPMI_ALG_HASH hash_alg, size_t hash_size, size_t digest_idx)</td></tr>
- <tr class="separator:ga959cdbfee441db40e08a25a6b5508312"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga9fbf90c59843f0add73e9d9de69f33d1"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga9fbf90c59843f0add73e9d9de69f33d1">ifapi_calculate_policy_authorize</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_a_u_t_h_o_r_i_z_e.html">TPMS_POLICYAUTHORIZE</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga9fbf90c59843f0add73e9d9de69f33d1"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga44f6a328290d32b03bd92de0a94f24ed"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga44f6a328290d32b03bd92de0a94f24ed">ifapi_calculate_policy_authorize_nv</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_a_u_t_h_o_r_i_z_e_n_v.html">TPMS_POLICYAUTHORIZENV</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga44f6a328290d32b03bd92de0a94f24ed"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaa7f669753404880d5b0135f4eac1a54e"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#gaa7f669753404880d5b0135f4eac1a54e">ifapi_calculate_policy_command_code</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_c_o_m_m_a_n_d_c_o_d_e.html">TPMS_POLICYCOMMANDCODE</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:gaa7f669753404880d5b0135f4eac1a54e"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga9ed3dd6c381b21fb63dcb67c7a81bf14"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga9ed3dd6c381b21fb63dcb67c7a81bf14">ifapi_calculate_policy_counter_timer</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_c_o_u_n_t_e_r_t_i_m_e_r.html">TPMS_POLICYCOUNTERTIMER</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga9ed3dd6c381b21fb63dcb67c7a81bf14"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaa5dc445da32612ac83611cfad88318c4"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#gaa5dc445da32612ac83611cfad88318c4">ifapi_calculate_policy_cp_hash</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_c_p_h_a_s_h.html">TPMS_POLICYCPHASH</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:gaa5dc445da32612ac83611cfad88318c4"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaba6cdfe85baf4b0502d7d41d3a21ca8f"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#gaba6cdfe85baf4b0502d7d41d3a21ca8f">ifapi_calculate_policy_digest_hash</a> (TPM2B_DIGEST *digest, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg, TPM2_CC command_code)</td></tr>
- <tr class="separator:gaba6cdfe85baf4b0502d7d41d3a21ca8f"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga0e3b46d4597dea46f4c0b8d5c97029a9"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga0e3b46d4597dea46f4c0b8d5c97029a9">ifapi_calculate_policy_duplicate</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_d_u_p_l_i_c_a_t_i_o_n_s_e_l_e_c_t.html">TPMS_POLICYDUPLICATIONSELECT</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga0e3b46d4597dea46f4c0b8d5c97029a9"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga0a040ee310af9b00e52889ee5f5d539a"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga0a040ee310af9b00e52889ee5f5d539a">ifapi_calculate_policy_locality</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_l_o_c_a_l_i_t_y.html">TPMS_POLICYLOCALITY</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga0a040ee310af9b00e52889ee5f5d539a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga770dcf38187e6356701ddfd6ece5f0eb"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga770dcf38187e6356701ddfd6ece5f0eb">ifapi_calculate_policy_name_hash</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_n_a_m_e_h_a_s_h.html">TPMS_POLICYNAMEHASH</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga770dcf38187e6356701ddfd6ece5f0eb"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga38c784847444e3b50e158f146d913d6a"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga38c784847444e3b50e158f146d913d6a">ifapi_calculate_policy_nv</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_n_v.html">TPMS_POLICYNV</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga38c784847444e3b50e158f146d913d6a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga424e5a67a951be415c090f0c68da3329"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga424e5a67a951be415c090f0c68da3329">ifapi_calculate_policy_nv_written</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_n_v_w_r_i_t_t_e_n.html">TPMS_POLICYNVWRITTEN</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga424e5a67a951be415c090f0c68da3329"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gafb80869164b6798e92befa69192caaf6"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#gafb80869164b6798e92befa69192caaf6">ifapi_calculate_policy_or</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_o_r.html">TPMS_POLICYOR</a> *policyOr, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH hash_alg, size_t hash_size, size_t digest_idx)</td></tr>
- <tr class="separator:gafb80869164b6798e92befa69192caaf6"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga431512c41eeeb7120ce8c9849e3a8a60"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga431512c41eeeb7120ce8c9849e3a8a60">ifapi_calculate_policy_secret</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_s_e_c_r_e_t.html">TPMS_POLICYSECRET</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga431512c41eeeb7120ce8c9849e3a8a60"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga5471b7bf1a14125e033904d986629eb8"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#ga5471b7bf1a14125e033904d986629eb8">ifapi_calculate_policy_signed</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_s_i_g_n_e_d.html">TPMS_POLICYSIGNED</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:ga5471b7bf1a14125e033904d986629eb8"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaaf855bd0e68bacff034168df555d4412"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#gaaf855bd0e68bacff034168df555d4412">ifapi_calculate_simple_policy</a> (TPM2_CC command_code1, TPM2_CC command_code2, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:gaaf855bd0e68bacff034168df555d4412"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gab244e28f8bce51e7806ba4a0b310b5b8"><td class="memItemLeft" align="right" valign="top">TSS2_RC </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html#gab244e28f8bce51e7806ba4a0b310b5b8">ifapi_compute_policy_pcr</a> (<a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_p_c_r.html">TPMS_POLICYPCR</a> *policy, TPML_DIGEST_VALUES *current_digest, TPMI_ALG_HASH current_hash_alg)</td></tr>
- <tr class="separator:gab244e28f8bce51e7806ba4a0b310b5b8"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <p>Provides functions for policy calculation (without TPM). </p>
- <h2 class="groupheader">Function Documentation</h2>
- <a id="ga959cdbfee441db40e08a25a6b5508312"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga959cdbfee441db40e08a25a6b5508312">◆ </a></span>ifapi_calculate_policy()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_l___p_o_l_i_c_y_e_l_e_m_e_n_t_s.html">TPML_POLICYELEMENTS</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>policyDigests</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>hash_alg</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"><em>hash_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"><em>digest_idx</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy digest for a list of policies.</p>
- <p>Every policy in the list will update the previous policy. Thus the final policy digest will describe the sequential execution of the policy list.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the policy list. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">policyDigests</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The hash algorithm used for the policy computation. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">hash_size</td><td>The size of the policy digest. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">digest_idx</td><td>The index of the current policy in the passed digest list.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga9fbf90c59843f0add73e9d9de69f33d1"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga9fbf90c59843f0add73e9d9de69f33d1">◆ </a></span>ifapi_calculate_policy_authorize()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_authorize </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_a_u_t_h_o_r_i_z_e.html">TPMS_POLICYAUTHORIZE</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Calculate a policy digest for a placeholder policy.</p>
- <p>The placeholder policy can be extended during execution by a signed policy, which can be verified by using the parameters of this placeholder policy. Based on the command code, the key name of the signing key and a policy reference the new policy digest is computed by the function calculate_policy_key_param().</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the name of the public key and the policy reference. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga44f6a328290d32b03bd92de0a94f24ed"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga44f6a328290d32b03bd92de0a94f24ed">◆ </a></span>ifapi_calculate_policy_authorize_nv()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_authorize_nv </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_a_u_t_h_o_r_i_z_e_n_v.html">TPMS_POLICYAUTHORIZENV</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Calculate a policy digest for a policy stored in an approved NV index.</p>
- <p>Based on the command code, and the computed NV name the new policy digest is computed by the function calculate_policy_key_param().</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the public information of the NV index. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="gaa7f669753404880d5b0135f4eac1a54e"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gaa7f669753404880d5b0135f4eac1a54e">◆ </a></span>ifapi_calculate_policy_command_code()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_command_code </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_c_o_m_m_a_n_d_c_o_d_e.html">TPMS_POLICYCOMMANDCODE</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Update policy command code with a command code defined in the policy.</p>
- <p>For the update two command codes will be used. The command code of policy command code and the passed command code. The policy will be updated with the function <a class="el" href="group__ifapi__policy.html#gaaf855bd0e68bacff034168df555d4412">ifapi_calculate_simple_policy()</a></p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy command code with the second command code. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga9ed3dd6c381b21fb63dcb67c7a81bf14"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga9ed3dd6c381b21fb63dcb67c7a81bf14">◆ </a></span>ifapi_calculate_policy_counter_timer()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_counter_timer </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_c_o_u_n_t_e_r_t_i_m_e_r.html">TPMS_POLICYCOUNTERTIMER</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Calculate a policy for for comparing current TPM timers with the policy.</p>
- <p>The timer value and the operation for comparison defined in the policy will bu used to update the policy digest. The offset which is supported by the TPM policy for FAPI will be 0.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the timer value and the operation for comparison. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="gaa5dc445da32612ac83611cfad88318c4"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gaa5dc445da32612ac83611cfad88318c4">◆ </a></span>ifapi_calculate_policy_cp_hash()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_cp_hash </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_c_p_h_a_s_h.html">TPMS_POLICYCPHASH</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy bound to a specific command and command parameters.</p>
- <p>The cp hash value and the command code will be updated by the function <a class="el" href="group__ifapi__policy.html#gaba6cdfe85baf4b0502d7d41d3a21ca8f">ifapi_calculate_policy_digest_hash()</a>.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the cp hash value. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="gaba6cdfe85baf4b0502d7d41d3a21ca8f"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gaba6cdfe85baf4b0502d7d41d3a21ca8f">◆ </a></span>ifapi_calculate_policy_digest_hash()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_digest_hash </td>
- <td>(</td>
- <td class="paramtype">TPM2B_DIGEST * </td>
- <td class="paramname"><em>digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPM2_CC </td>
- <td class="paramname"><em>command_code</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy if only a digest and a command code are needed for extension.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">digest</td><td>the digest which will be used for policy extension. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">command_code</td><td>The compute of the command which did compute the digest.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga0e3b46d4597dea46f4c0b8d5c97029a9"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga0e3b46d4597dea46f4c0b8d5c97029a9">◆ </a></span>ifapi_calculate_policy_duplicate()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_duplicate </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_d_u_p_l_i_c_a_t_i_o_n_s_e_l_e_c_t.html">TPMS_POLICYDUPLICATIONSELECT</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Calculate a policy digest to allow duplication force a selected new parent.</p>
- <p>Based on the command code, the name of the new parent, and the include object switch the new policy digest is computed.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the new parent information. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga0a040ee310af9b00e52889ee5f5d539a"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga0a040ee310af9b00e52889ee5f5d539a">◆ </a></span>ifapi_calculate_policy_locality()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_locality </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_l_o_c_a_l_i_t_y.html">TPMS_POLICYLOCALITY</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy which limits authorization to a specific locality.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the locality. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga770dcf38187e6356701ddfd6ece5f0eb"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga770dcf38187e6356701ddfd6ece5f0eb">◆ </a></span>ifapi_calculate_policy_name_hash()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_name_hash </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_n_a_m_e_h_a_s_h.html">TPMS_POLICYNAMEHASH</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy bound to a specific set of TPM entities.</p>
- <p>The policy digest will be updated with the function <a class="el" href="group__ifapi__policy.html#gaba6cdfe85baf4b0502d7d41d3a21ca8f">ifapi_calculate_policy_digest_hash()</a> which will add the hash of the entity name list.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the list of entity names. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga38c784847444e3b50e158f146d913d6a"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga38c784847444e3b50e158f146d913d6a">◆ </a></span>ifapi_calculate_policy_nv()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_nv </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_n_v.html">TPMS_POLICYNV</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy bound to the content of an NV index.</p>
- <p>The value used for comparison, the compare operation and an offset for the NV index are part of the policy.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the expected values used for comparison. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga424e5a67a951be415c090f0c68da3329"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga424e5a67a951be415c090f0c68da3329">◆ </a></span>ifapi_calculate_policy_nv_written()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_nv_written </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_n_v_w_r_i_t_t_e_n.html">TPMS_POLICYNVWRITTEN</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy bound to bound to the TPMA_NV_WRITTEN attributes.</p>
- <p>The expected value of the NV written attribute is part of the policy.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the expected attribute value. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="gafb80869164b6798e92befa69192caaf6"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gafb80869164b6798e92befa69192caaf6">◆ </a></span>ifapi_calculate_policy_or()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_or </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_o_r.html">TPMS_POLICYOR</a> * </td>
- <td class="paramname"><em>policyOr</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>hash_alg</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"><em>hash_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"><em>digest_idx</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute a list of policies to enable authorization options.</p>
- <p>First the policy digest will be computed for every branch. After that the policy digest will be reset to zero and extended by the list of computed policy digests of the branches.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policyOr</td><td>The policy with the possible policy branches. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The hash algorithm used for the policy computation. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">hash_size</td><td>The size of the policy digest. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">digest_idx</td><td>The index of the current policy in the passed digest list.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga431512c41eeeb7120ce8c9849e3a8a60"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga431512c41eeeb7120ce8c9849e3a8a60">◆ </a></span>ifapi_calculate_policy_secret()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_secret </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_s_e_c_r_e_t.html">TPMS_POLICYSECRET</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Calculate a policy for adding secret-based authorization.</p>
- <p>During execution proving the knowledge of the secrect auth value of a certain object is required. The name of this object and a policy reference is used for policy calculation. Based on the command code, the object name and a policy reference the new policy digest is computed by the function calculate_policy_key_param().</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the object name of the object to be authorized and the policy reference. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga5471b7bf1a14125e033904d986629eb8"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga5471b7bf1a14125e033904d986629eb8">◆ </a></span>ifapi_calculate_policy_signed()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_policy_signed </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_s_i_g_n_e_d.html">TPMS_POLICYSIGNED</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Calculate a policy digest for a signed policy.</p>
- <p>Based on the command code, the public key, and the policy reference stored in the policy the new policy digest is computed by the function calculate_policy_key_param().</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the public key and the policy reference. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="gaaf855bd0e68bacff034168df555d4412"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gaaf855bd0e68bacff034168df555d4412">◆ </a></span>ifapi_calculate_simple_policy()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_simple_policy </td>
- <td>(</td>
- <td class="paramtype">TPM2_CC </td>
- <td class="paramname"><em>command_code1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPM2_CC </td>
- <td class="paramname"><em>command_code2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Update policy if only the command codes are used.</p>
- <p>Some simple policies use onle one or two command codes for policy calculation.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">command_code1</td><td>The first command code for policy extension. Can be NULL. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">command_code2</td><td>The second command code for policy extension. Can be NULL. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga0dd62193830c4656f409ce6102cb3568"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga0dd62193830c4656f409ce6102cb3568">◆ </a></span>ifapi_calculate_tree()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_calculate_tree </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_f_a_p_i___c_o_n_t_e_x_t.html">FAPI_CONTEXT</a> * </td>
- <td class="paramname"><em>context</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>policyPath</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y.html">TPMS_POLICY</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>hash_alg</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t * </td>
- <td class="paramname"><em>digest_idx</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t * </td>
- <td class="paramname"><em>hash_size</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute policy digest for a policy tree.</p>
- <p>A policy or a policy path can be passed. If a policy is passed the policy is computed directly from the policy otherwise the policy has to be retrieved from policy store to determine the policy.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in,out]</td><td class="paramname">context</td><td>The <a class="el" href="struct_f_a_p_i___c_o_n_t_e_x_t.html">FAPI_CONTEXT</a>. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">policyPath</td><td>The policy path for policy store. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The result of policy deserialization. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The used hash alg for policy digest computations. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">digest_idx</td><td>The index of the current digest. The policy digest can be computed for several hash algorithms the digets index is a reverence to the current digest values. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">hash_size</td><td>The size of the current policy digest.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>If an internal error occurs, which is not covered by other return codes. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>If wrong values are detected during policy calculation. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_IO_ERROR</td><td>If an error occurs during access to the policy store. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_PATH_NOT_FOUND</td><td>If an object needed for policy calculation was not found. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_POLICY_UNKNOWN</td><td>If policy search for a certain policy digest was not successful. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_TRY_AGAIN</td><td>if an I/O operation is not finished yet and this function needs to be called again. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_SEQUENCE</td><td>if the context has an asynchronous operation already pending. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_KEY_NOT_FOUND</td><td>if a key was not found. </td></tr>
- <tr><td class="paramname">TSS2_ESYS_RC_*</td><td>possible error codes of ESAPI. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_NOT_PROVISIONED</td><td>FAPI was not provisioned. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_PATH</td><td>if the path is used in inappropriate context or contains illegal characters. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="gab244e28f8bce51e7806ba4a0b310b5b8"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gab244e28f8bce51e7806ba4a0b310b5b8">◆ </a></span>ifapi_compute_policy_pcr()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">TSS2_RC ifapi_compute_policy_pcr </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="struct_t_p_m_s___p_o_l_i_c_y_p_c_r.html">TPMS_POLICYPCR</a> * </td>
- <td class="paramname"><em>policy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPML_DIGEST_VALUES * </td>
- <td class="paramname"><em>current_digest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TPMI_ALG_HASH </td>
- <td class="paramname"><em>current_hash_alg</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Calculate a policy digest for a certain PCR selection.</p>
- <p>From a PCR list the list of PCR values and the corresponding PCR digest is computed. The passed policy digest will be extended with this data and also with the policy command code.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">policy</td><td>The policy with the list of selected PCRs. </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">current_digest</td><td>The digest list which has to be updated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">current_hash_alg</td><td>The hash algorithm used for the policy computation.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="retval"><dt>Return values</dt><dd>
- <table class="retval">
- <tr><td class="paramname">TSS2_RC_SUCCESS</td><td>on success. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_VALUE</td><td>if an invalid value was passed into the function. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_GENERAL_FAILURE</td><td>if an internal error occurred. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_BAD_REFERENCE</td><td>a invalid null pointer is passed. </td></tr>
- <tr><td class="paramname">TSS2_FAPI_RC_MEMORY</td><td>if not enough memory can be allocated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- </div><!-- contents -->
- </div><!-- doc-content -->
- <!-- start footer part -->
- <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="footer">Generated by
- <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
- </ul>
- </div>
- </body>
- </html>
|