Home | History | Annotate | Download | only in html
      1 <!-- HTML header for doxygen 1.8.10-->
      2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      3 <html xmlns="http://www.w3.org/1999/xhtml">
      4 <head>
      5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
      6 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
      7 <meta name="generator" content="Doxygen 1.8.14"/>
      8 <title>Intel&reg; Enhanced Privacy ID SDK: finitefield</title>
      9 <link href="tabs.css" rel="stylesheet" type="text/css"/>
     10 <script type="text/javascript" src="jquery.js"></script>
     11 <script type="text/javascript" src="dynsections.js"></script>
     12 <link href="navtree.css" rel="stylesheet" type="text/css"/>
     13 <script type="text/javascript" src="resize.js"></script>
     14 <script type="text/javascript" src="navtreedata.js"></script>
     15 <script type="text/javascript" src="navtree.js"></script>
     16 <script type="text/javascript">
     17 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
     18   $(document).ready(initResizable);
     19 /* @license-end */</script>
     20 <link href="doxygen.css" rel="stylesheet" type="text/css" />
     21 <link href="epidstyle.css" rel="stylesheet" type="text/css"/>
     22 </head>
     23 <body>
     24 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
     25 <div id="titlearea">
     26 <table cellspacing="0" cellpadding="0">
     27  <tbody>
     28  <tr style="height: 56px;">
     29   <td id="projectalign" style="padding-left: 0.5em;">
     30    <div id="projectname"><a 
     31                             onclick="storeLink('index.html')"
     32                             id="projectlink" 
     33                             class="index.html" 
     34                             href="index.html">Intel&reg; Enhanced Privacy ID SDK</a>
     35 &#160;<span id="projectnumber">6.0.1</span>
     36 </div>
     37   </td>
     38  </tr>
     39  </tbody>
     40 </table>
     41 </div>
     42 <!-- end header part -->
     43 <!-- Generated by Doxygen 1.8.14 -->
     44 </div><!-- top -->
     45 <div id="side-nav" class="ui-resizable side-nav-resizable">
     46   <div id="nav-tree">
     47     <div id="nav-tree-contents">
     48       <div id="nav-sync" class="sync"></div>
     49     </div>
     50   </div>
     51   <div id="splitbar" style="-moz-user-select:none;" 
     52        class="ui-resizable-handle">
     53   </div>
     54 </div>
     55 <script type="text/javascript">
     56 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
     57 $(document).ready(function(){initNavTree('group___finite_field_primitives.html','');});
     58 /* @license-end */
     59 </script>
     60 <div id="doc-content">
     61 <div class="header">
     62   <div class="summary">
     63 <a href="#typedef-members">Typedefs</a> &#124;
     64 <a href="#func-members">Functions</a>  </div>
     65   <div class="headertitle">
     66 <div class="title">finitefield<div class="ingroups"><a class="el" href="group___epid_module.html">epid&amp;nbsp;</a> &raquo; <a class="el" href="group___epid_common.html">common</a> &raquo; <a class="el" href="group___epid_math.html">math</a></div></div>  </div>
     67 </div><!--header-->
     68 <div class="contents">
     69 
     70 <p>Finite field operations.  
     71 <a href="#details">More...</a></p>
     72 <table class="memberdecls">
     73 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
     74 Typedefs</h2></td></tr>
     75 <tr class="memitem:gab281b24e336a8b3d7d90079d862d969e"><td class="memItemLeft" align="right" valign="top"><a id="gab281b24e336a8b3d7d90079d862d969e"></a>
     76 typedef struct <a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a></td></tr>
     77 <tr class="memdesc:gab281b24e336a8b3d7d90079d862d969e"><td class="mdescLeft">&#160;</td><td class="mdescRight">A finite field. <br /></td></tr>
     78 <tr class="separator:gab281b24e336a8b3d7d90079d862d969e"><td class="memSeparator" colspan="2">&#160;</td></tr>
     79 <tr class="memitem:ga6cff5c7c06b07a87442b810ccc0a86fa"><td class="memItemLeft" align="right" valign="top"><a id="ga6cff5c7c06b07a87442b810ccc0a86fa"></a>
     80 typedef struct <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a></td></tr>
     81 <tr class="memdesc:ga6cff5c7c06b07a87442b810ccc0a86fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">An element in a finite field. <br /></td></tr>
     82 <tr class="separator:ga6cff5c7c06b07a87442b810ccc0a86fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
     83 </table><table class="memberdecls">
     84 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
     85 Functions</h2></td></tr>
     86 <tr class="memitem:ga7d99fdc5e4573668a5744e49df7ab67c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c">NewFiniteField</a> (<a class="el" href="struct_big_num_str.html">BigNumStr</a> const *prime, <a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **ff)</td></tr>
     87 <tr class="memdesc:ga7d99fdc5e4573668a5744e49df7ab67c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates new finite field.  <a href="#ga7d99fdc5e4573668a5744e49df7ab67c">More...</a><br /></td></tr>
     88 <tr class="separator:ga7d99fdc5e4573668a5744e49df7ab67c"><td class="memSeparator" colspan="2">&#160;</td></tr>
     89 <tr class="memitem:ga83041e3be9984a4bd8f1021934bfa3a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga83041e3be9984a4bd8f1021934bfa3a2">NewFiniteFieldViaBinomalExtension</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const *ground_field, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *ground_element, int degree, <a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **ff)</td></tr>
     90 <tr class="memdesc:ga83041e3be9984a4bd8f1021934bfa3a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new finite field using binomial extension.  <a href="#ga83041e3be9984a4bd8f1021934bfa3a2">More...</a><br /></td></tr>
     91 <tr class="separator:ga83041e3be9984a4bd8f1021934bfa3a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
     92 <tr class="memitem:gae69af62a03179718cac81b004549c598"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gae69af62a03179718cac81b004549c598">NewFiniteFieldViaPolynomialExtension</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const *ground_field, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const *irr_polynomial, int degree, <a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **ff)</td></tr>
     93 <tr class="memdesc:gae69af62a03179718cac81b004549c598"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new finite field using polynomial extension.  <a href="#gae69af62a03179718cac81b004549c598">More...</a><br /></td></tr>
     94 <tr class="separator:gae69af62a03179718cac81b004549c598"><td class="memSeparator" colspan="2">&#160;</td></tr>
     95 <tr class="memitem:gacbdd2871ecf93dadaac9d2c5b16e1e5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f">DeleteFiniteField</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **ff)</td></tr>
     96 <tr class="memdesc:gacbdd2871ecf93dadaac9d2c5b16e1e5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees a previously allocated FiniteField.  <a href="#gacbdd2871ecf93dadaac9d2c5b16e1e5f">More...</a><br /></td></tr>
     97 <tr class="separator:gacbdd2871ecf93dadaac9d2c5b16e1e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
     98 <tr class="memitem:gacc54f315ede2dbeb8c5990c024a0de6c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c">NewFfElement</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> **new_ff_elem)</td></tr>
     99 <tr class="memdesc:gacc54f315ede2dbeb8c5990c024a0de6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new finite field element.  <a href="#gacc54f315ede2dbeb8c5990c024a0de6c">More...</a><br /></td></tr>
    100 <tr class="separator:gacc54f315ede2dbeb8c5990c024a0de6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
    101 <tr class="memitem:ga1bad3c6945d1d709fceb07a1dd03000e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga1bad3c6945d1d709fceb07a1dd03000e">DeleteFfElement</a> (<a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> **ff_elem)</td></tr>
    102 <tr class="memdesc:ga1bad3c6945d1d709fceb07a1dd03000e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees a previously allocated FfElement.  <a href="#ga1bad3c6945d1d709fceb07a1dd03000e">More...</a><br /></td></tr>
    103 <tr class="separator:ga1bad3c6945d1d709fceb07a1dd03000e"><td class="memSeparator" colspan="2">&#160;</td></tr>
    104 <tr class="memitem:ga8a143a5a815a62f4947be2de1653c50f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga8a143a5a815a62f4947be2de1653c50f">ReadFfElement</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> ff_elem_str, size_t strlen, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *ff_elem)</td></tr>
    105 <tr class="memdesc:ga8a143a5a815a62f4947be2de1653c50f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deserializes a FfElement from a string.  <a href="#ga8a143a5a815a62f4947be2de1653c50f">More...</a><br /></td></tr>
    106 <tr class="separator:ga8a143a5a815a62f4947be2de1653c50f"><td class="memSeparator" colspan="2">&#160;</td></tr>
    107 <tr class="memitem:ga90b2c192708973b54b7a3e82b34536ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga90b2c192708973b54b7a3e82b34536ed">InitFfElementFromBn</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> *bn, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *ff_elem)</td></tr>
    108 <tr class="memdesc:ga90b2c192708973b54b7a3e82b34536ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes an existing FfElement from a BigNum.  <a href="#ga90b2c192708973b54b7a3e82b34536ed">More...</a><br /></td></tr>
    109 <tr class="separator:ga90b2c192708973b54b7a3e82b34536ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
    110 <tr class="memitem:gaa3c1f7515dd823ddad8764091ebc665f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gaa3c1f7515dd823ddad8764091ebc665f">WriteFfElement</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *ff_elem, <a class="el" href="group___epid_types.html#ga3315fb24f4c5783b6d6eb107933390b0">OctStr</a> ff_elem_str, size_t strlen)</td></tr>
    111 <tr class="memdesc:gaa3c1f7515dd823ddad8764091ebc665f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes a finite field element to a string.  <a href="#gaa3c1f7515dd823ddad8764091ebc665f">More...</a><br /></td></tr>
    112 <tr class="separator:gaa3c1f7515dd823ddad8764091ebc665f"><td class="memSeparator" colspan="2">&#160;</td></tr>
    113 <tr class="memitem:gae7a8c7503b6fc7a41bcaab4d45ca37b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gae7a8c7503b6fc7a41bcaab4d45ca37b2">FfNeg</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    114 <tr class="memdesc:gae7a8c7503b6fc7a41bcaab4d45ca37b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the additive inverse of a finite field element.  <a href="#gae7a8c7503b6fc7a41bcaab4d45ca37b2">More...</a><br /></td></tr>
    115 <tr class="separator:gae7a8c7503b6fc7a41bcaab4d45ca37b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
    116 <tr class="memitem:ga26069d035d0f6ade33af2b5d5c14949a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga26069d035d0f6ade33af2b5d5c14949a">FfInv</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    117 <tr class="memdesc:ga26069d035d0f6ade33af2b5d5c14949a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the multiplicative inverse of a finite field element.  <a href="#ga26069d035d0f6ade33af2b5d5c14949a">More...</a><br /></td></tr>
    118 <tr class="separator:ga26069d035d0f6ade33af2b5d5c14949a"><td class="memSeparator" colspan="2">&#160;</td></tr>
    119 <tr class="memitem:ga1a6e6d3c2319bb24eae8670b021e223b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga1a6e6d3c2319bb24eae8670b021e223b">FfAdd</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *b, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    120 <tr class="memdesc:ga1a6e6d3c2319bb24eae8670b021e223b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds two finite field elements.  <a href="#ga1a6e6d3c2319bb24eae8670b021e223b">More...</a><br /></td></tr>
    121 <tr class="separator:ga1a6e6d3c2319bb24eae8670b021e223b"><td class="memSeparator" colspan="2">&#160;</td></tr>
    122 <tr class="memitem:ga59d20610f245ff4bc3a17b7bfe289991"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga59d20610f245ff4bc3a17b7bfe289991">FfSub</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *b, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    123 <tr class="memdesc:ga59d20610f245ff4bc3a17b7bfe289991"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts two finite field elements.  <a href="#ga59d20610f245ff4bc3a17b7bfe289991">More...</a><br /></td></tr>
    124 <tr class="separator:ga59d20610f245ff4bc3a17b7bfe289991"><td class="memSeparator" colspan="2">&#160;</td></tr>
    125 <tr class="memitem:ga4613a75bd001a974b3e3e494c3a112a5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga4613a75bd001a974b3e3e494c3a112a5">FfMul</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *b, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    126 <tr class="memdesc:ga4613a75bd001a974b3e3e494c3a112a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiplies two finite field elements.  <a href="#ga4613a75bd001a974b3e3e494c3a112a5">More...</a><br /></td></tr>
    127 <tr class="separator:ga4613a75bd001a974b3e3e494c3a112a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
    128 <tr class="memitem:ga20d9140e5670d679ef8183d9b5115f53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga20d9140e5670d679ef8183d9b5115f53">FfIsZero</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> *is_zero)</td></tr>
    129 <tr class="memdesc:ga20d9140e5670d679ef8183d9b5115f53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if given finite field element is the additive identity (zero).  <a href="#ga20d9140e5670d679ef8183d9b5115f53">More...</a><br /></td></tr>
    130 <tr class="separator:ga20d9140e5670d679ef8183d9b5115f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
    131 <tr class="memitem:gaf0ddbc1bad048d67771cba119eb44a6c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gaf0ddbc1bad048d67771cba119eb44a6c">FfExp</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const *b, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    132 <tr class="memdesc:gaf0ddbc1bad048d67771cba119eb44a6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raises an element of a finite field to a power.  <a href="#gaf0ddbc1bad048d67771cba119eb44a6c">More...</a><br /></td></tr>
    133 <tr class="separator:gaf0ddbc1bad048d67771cba119eb44a6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
    134 <tr class="memitem:ga84d21decc1c957bcf6e98e1492eb2ac3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga84d21decc1c957bcf6e98e1492eb2ac3">FfMultiExp</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const **a, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const **b, size_t m, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    135 <tr class="memdesc:ga84d21decc1c957bcf6e98e1492eb2ac3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-exponentiates finite field elements.  <a href="#ga84d21decc1c957bcf6e98e1492eb2ac3">More...</a><br /></td></tr>
    136 <tr class="separator:ga84d21decc1c957bcf6e98e1492eb2ac3"><td class="memSeparator" colspan="2">&#160;</td></tr>
    137 <tr class="memitem:ga1ef46fc83f9c11263a2aa1ec906c9144"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga1ef46fc83f9c11263a2aa1ec906c9144">FfMultiExpBn</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const **a, <a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const **b, size_t m, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    138 <tr class="memdesc:ga1ef46fc83f9c11263a2aa1ec906c9144"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-exponentiates finite field elements.  <a href="#ga1ef46fc83f9c11263a2aa1ec906c9144">More...</a><br /></td></tr>
    139 <tr class="separator:ga1ef46fc83f9c11263a2aa1ec906c9144"><td class="memSeparator" colspan="2">&#160;</td></tr>
    140 <tr class="memitem:ga0d0c31a22bbfb665a16b2d25b0cd2634"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga0d0c31a22bbfb665a16b2d25b0cd2634">FfSscmMultiExp</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const **a, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const **b, size_t m, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    141 <tr class="memdesc:ga0d0c31a22bbfb665a16b2d25b0cd2634"><td class="mdescLeft">&#160;</td><td class="mdescRight">Software side-channel mitigated implementation of FfMultiExp.  <a href="#ga0d0c31a22bbfb665a16b2d25b0cd2634">More...</a><br /></td></tr>
    142 <tr class="separator:ga0d0c31a22bbfb665a16b2d25b0cd2634"><td class="memSeparator" colspan="2">&#160;</td></tr>
    143 <tr class="memitem:gaed2acb8583e9c9f6b49fdb660c672625"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gaed2acb8583e9c9f6b49fdb660c672625">FfIsEqual</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *b, <a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> *is_equal)</td></tr>
    144 <tr class="memdesc:gaed2acb8583e9c9f6b49fdb660c672625"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if two finite field elements are equal.  <a href="#gaed2acb8583e9c9f6b49fdb660c672625">More...</a><br /></td></tr>
    145 <tr class="separator:gaed2acb8583e9c9f6b49fdb660c672625"><td class="memSeparator" colspan="2">&#160;</td></tr>
    146 <tr class="memitem:gabd511d79d9cbd1899e59258f149102c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#gabd511d79d9cbd1899e59258f149102c5">FfHash</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> msg, size_t msg_len, <a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> hash_alg, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    147 <tr class="memdesc:gabd511d79d9cbd1899e59258f149102c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hashes an arbitrary message to an element in a finite field.  <a href="#gabd511d79d9cbd1899e59258f149102c5">More...</a><br /></td></tr>
    148 <tr class="separator:gabd511d79d9cbd1899e59258f149102c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
    149 <tr class="memitem:ga6622db072782fd9e53b4d59dd3dbd8e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga6622db072782fd9e53b4d59dd3dbd8e8">FfGetRandom</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const *low_bound, <a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> rnd_func, void *rnd_param, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    150 <tr class="memdesc:ga6622db072782fd9e53b4d59dd3dbd8e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate random finite field element.  <a href="#ga6622db072782fd9e53b4d59dd3dbd8e8">More...</a><br /></td></tr>
    151 <tr class="separator:ga6622db072782fd9e53b4d59dd3dbd8e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
    152 <tr class="memitem:ga39892fe2ab431e166dbbcf57756660f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___finite_field_primitives.html#ga39892fe2ab431e166dbbcf57756660f6">FfSqrt</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *r)</td></tr>
    153 <tr class="memdesc:ga39892fe2ab431e166dbbcf57756660f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds a square root of a finite field element.  <a href="#ga39892fe2ab431e166dbbcf57756660f6">More...</a><br /></td></tr>
    154 <tr class="separator:ga39892fe2ab431e166dbbcf57756660f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
    155 </table>
    156 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
    157 <p>Finite field operations. </p>
    158 <p>provides APIs for working with finite fields. Finite fields allow simple mathematical operations based on a finite set of discrete values. The results of these operations are also contained in the same set.</p>
    159 <p>A simple example of a finite field is all integers from zero that are less than a given value.</p>
    160 <p>The elements (<a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa" title="An element in a finite field. ">FfElement</a>) of a finite field can be used in a variety of simple mathematical operations that result in elements of the same field. </p>
    161 <h2 class="groupheader">Function Documentation</h2>
    162 <a id="ga1bad3c6945d1d709fceb07a1dd03000e"></a>
    163 <h2 class="memtitle"><span class="permalink"><a href="#ga1bad3c6945d1d709fceb07a1dd03000e">&#9670;&nbsp;</a></span>DeleteFfElement()</h2>
    164 
    165 <div class="memitem">
    166 <div class="memproto">
    167       <table class="memname">
    168         <tr>
    169           <td class="memname">void DeleteFfElement </td>
    170           <td>(</td>
    171           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> **&#160;</td>
    172           <td class="paramname"><em>ff_elem</em></td><td>)</td>
    173           <td></td>
    174         </tr>
    175       </table>
    176 </div><div class="memdoc">
    177 
    178 <p>Frees a previously allocated FfElement. </p>
    179 <p>Frees memory pointed to by ff_elem. Nulls the pointer.</p>
    180 <dl class="params"><dt>Parameters</dt><dd>
    181   <table class="params">
    182     <tr><td class="paramdir">[in]</td><td class="paramname">ff_elem</td><td>The finite field element. Can be NULL.</td></tr>
    183   </table>
    184   </dd>
    185 </dl>
    186 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    187 
    188 </div>
    189 </div>
    190 <a id="gacbdd2871ecf93dadaac9d2c5b16e1e5f"></a>
    191 <h2 class="memtitle"><span class="permalink"><a href="#gacbdd2871ecf93dadaac9d2c5b16e1e5f">&#9670;&nbsp;</a></span>DeleteFiniteField()</h2>
    192 
    193 <div class="memitem">
    194 <div class="memproto">
    195       <table class="memname">
    196         <tr>
    197           <td class="memname">void DeleteFiniteField </td>
    198           <td>(</td>
    199           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **&#160;</td>
    200           <td class="paramname"><em>ff</em></td><td>)</td>
    201           <td></td>
    202         </tr>
    203       </table>
    204 </div><div class="memdoc">
    205 
    206 <p>Frees a previously allocated FiniteField. </p>
    207 <p>Frees memory pointed to by finite field. Nulls the pointer.</p>
    208 <dl class="params"><dt>Parameters</dt><dd>
    209   <table class="params">
    210     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The Finite field. Can be NULL.</td></tr>
    211   </table>
    212   </dd>
    213 </dl>
    214 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd></dl>
    215 
    216 </div>
    217 </div>
    218 <a id="ga1a6e6d3c2319bb24eae8670b021e223b"></a>
    219 <h2 class="memtitle"><span class="permalink"><a href="#ga1a6e6d3c2319bb24eae8670b021e223b">&#9670;&nbsp;</a></span>FfAdd()</h2>
    220 
    221 <div class="memitem">
    222 <div class="memproto">
    223       <table class="memname">
    224         <tr>
    225           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfAdd </td>
    226           <td>(</td>
    227           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    228           <td class="paramname"><em>ff</em>, </td>
    229         </tr>
    230         <tr>
    231           <td class="paramkey"></td>
    232           <td></td>
    233           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    234           <td class="paramname"><em>a</em>, </td>
    235         </tr>
    236         <tr>
    237           <td class="paramkey"></td>
    238           <td></td>
    239           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    240           <td class="paramname"><em>b</em>, </td>
    241         </tr>
    242         <tr>
    243           <td class="paramkey"></td>
    244           <td></td>
    245           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    246           <td class="paramname"><em>r</em>&#160;</td>
    247         </tr>
    248         <tr>
    249           <td></td>
    250           <td>)</td>
    251           <td></td><td></td>
    252         </tr>
    253       </table>
    254 </div><div class="memdoc">
    255 
    256 <p>Adds two finite field elements. </p>
    257 <dl class="params"><dt>Parameters</dt><dd>
    258   <table class="params">
    259     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    260     <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The first operand to be added. </td></tr>
    261     <tr><td class="paramdir">[out]</td><td class="paramname">b</td><td>The second operand to be added. </td></tr>
    262     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of adding a and b.</td></tr>
    263   </table>
    264   </dd>
    265 </dl>
    266 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
    267 
    268 </div>
    269 </div>
    270 <a id="gaf0ddbc1bad048d67771cba119eb44a6c"></a>
    271 <h2 class="memtitle"><span class="permalink"><a href="#gaf0ddbc1bad048d67771cba119eb44a6c">&#9670;&nbsp;</a></span>FfExp()</h2>
    272 
    273 <div class="memitem">
    274 <div class="memproto">
    275       <table class="memname">
    276         <tr>
    277           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfExp </td>
    278           <td>(</td>
    279           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    280           <td class="paramname"><em>ff</em>, </td>
    281         </tr>
    282         <tr>
    283           <td class="paramkey"></td>
    284           <td></td>
    285           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    286           <td class="paramname"><em>a</em>, </td>
    287         </tr>
    288         <tr>
    289           <td class="paramkey"></td>
    290           <td></td>
    291           <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const *&#160;</td>
    292           <td class="paramname"><em>b</em>, </td>
    293         </tr>
    294         <tr>
    295           <td class="paramkey"></td>
    296           <td></td>
    297           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    298           <td class="paramname"><em>r</em>&#160;</td>
    299         </tr>
    300         <tr>
    301           <td></td>
    302           <td>)</td>
    303           <td></td><td></td>
    304         </tr>
    305       </table>
    306 </div><div class="memdoc">
    307 
    308 <p>Raises an element of a finite field to a power. </p>
    309 <dl class="params"><dt>Parameters</dt><dd>
    310   <table class="params">
    311     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr>
    312     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The base. </td></tr>
    313     <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The power. </td></tr>
    314     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising a to the power b.</td></tr>
    315   </table>
    316   </dd>
    317 </dl>
    318 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    319 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    320 <dd>
    321 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    322 
    323 </div>
    324 </div>
    325 <a id="ga6622db072782fd9e53b4d59dd3dbd8e8"></a>
    326 <h2 class="memtitle"><span class="permalink"><a href="#ga6622db072782fd9e53b4d59dd3dbd8e8">&#9670;&nbsp;</a></span>FfGetRandom()</h2>
    327 
    328 <div class="memitem">
    329 <div class="memproto">
    330       <table class="memname">
    331         <tr>
    332           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfGetRandom </td>
    333           <td>(</td>
    334           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    335           <td class="paramname"><em>ff</em>, </td>
    336         </tr>
    337         <tr>
    338           <td class="paramkey"></td>
    339           <td></td>
    340           <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const *&#160;</td>
    341           <td class="paramname"><em>low_bound</em>, </td>
    342         </tr>
    343         <tr>
    344           <td class="paramkey"></td>
    345           <td></td>
    346           <td class="paramtype"><a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a>&#160;</td>
    347           <td class="paramname"><em>rnd_func</em>, </td>
    348         </tr>
    349         <tr>
    350           <td class="paramkey"></td>
    351           <td></td>
    352           <td class="paramtype">void *&#160;</td>
    353           <td class="paramname"><em>rnd_param</em>, </td>
    354         </tr>
    355         <tr>
    356           <td class="paramkey"></td>
    357           <td></td>
    358           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    359           <td class="paramname"><em>r</em>&#160;</td>
    360         </tr>
    361         <tr>
    362           <td></td>
    363           <td>)</td>
    364           <td></td><td></td>
    365         </tr>
    366       </table>
    367 </div><div class="memdoc">
    368 
    369 <p>Generate random finite field element. </p>
    370 <dl class="params"><dt>Parameters</dt><dd>
    371   <table class="params">
    372     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field associated with the random finite field element. </td></tr>
    373     <tr><td class="paramdir">[in]</td><td class="paramname">low_bound</td><td>Lower bound of the random finite field to be generated. </td></tr>
    374     <tr><td class="paramdir">[in]</td><td class="paramname">rnd_func</td><td>Random number generator. </td></tr>
    375     <tr><td class="paramdir">[in]</td><td class="paramname">rnd_param</td><td>Pass through context data for rnd_func. </td></tr>
    376     <tr><td class="paramdir">[in,out]</td><td class="paramname">r</td><td>The random finite field element.</td></tr>
    377   </table>
    378   </dd>
    379 </dl>
    380 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    381 <dl class="retval"><dt>Return values</dt><dd>
    382   <table class="retval">
    383     <tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a61234ad9610406da6bf7977afd72a357" title="reached max iteration for random number generation ">kEpidRandMaxIterErr</a></td><td>the function should be called again with different random data.</td></tr>
    384   </table>
    385   </dd>
    386 </dl>
    387 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd>
    388 <dd>
    389 <a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c" title="Generates random data. ">BitSupplier</a> </dd></dl>
    390 
    391 </div>
    392 </div>
    393 <a id="gabd511d79d9cbd1899e59258f149102c5"></a>
    394 <h2 class="memtitle"><span class="permalink"><a href="#gabd511d79d9cbd1899e59258f149102c5">&#9670;&nbsp;</a></span>FfHash()</h2>
    395 
    396 <div class="memitem">
    397 <div class="memproto">
    398       <table class="memname">
    399         <tr>
    400           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfHash </td>
    401           <td>(</td>
    402           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    403           <td class="paramname"><em>ff</em>, </td>
    404         </tr>
    405         <tr>
    406           <td class="paramkey"></td>
    407           <td></td>
    408           <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a>&#160;</td>
    409           <td class="paramname"><em>msg</em>, </td>
    410         </tr>
    411         <tr>
    412           <td class="paramkey"></td>
    413           <td></td>
    414           <td class="paramtype">size_t&#160;</td>
    415           <td class="paramname"><em>msg_len</em>, </td>
    416         </tr>
    417         <tr>
    418           <td class="paramkey"></td>
    419           <td></td>
    420           <td class="paramtype"><a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a>&#160;</td>
    421           <td class="paramname"><em>hash_alg</em>, </td>
    422         </tr>
    423         <tr>
    424           <td class="paramkey"></td>
    425           <td></td>
    426           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    427           <td class="paramname"><em>r</em>&#160;</td>
    428         </tr>
    429         <tr>
    430           <td></td>
    431           <td>)</td>
    432           <td></td><td></td>
    433         </tr>
    434       </table>
    435 </div><div class="memdoc">
    436 
    437 <p>Hashes an arbitrary message to an element in a finite field. </p>
    438 <dl class="params"><dt>Parameters</dt><dd>
    439   <table class="params">
    440     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    441     <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message. </td></tr>
    442     <tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The size of msg in bytes. </td></tr>
    443     <tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The hash algorithm. </td></tr>
    444     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The hashed value.</td></tr>
    445   </table>
    446   </dd>
    447 </dl>
    448 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    449 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    450 <dd>
    451 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    452 
    453 </div>
    454 </div>
    455 <a id="ga26069d035d0f6ade33af2b5d5c14949a"></a>
    456 <h2 class="memtitle"><span class="permalink"><a href="#ga26069d035d0f6ade33af2b5d5c14949a">&#9670;&nbsp;</a></span>FfInv()</h2>
    457 
    458 <div class="memitem">
    459 <div class="memproto">
    460       <table class="memname">
    461         <tr>
    462           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfInv </td>
    463           <td>(</td>
    464           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    465           <td class="paramname"><em>ff</em>, </td>
    466         </tr>
    467         <tr>
    468           <td class="paramkey"></td>
    469           <td></td>
    470           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    471           <td class="paramname"><em>a</em>, </td>
    472         </tr>
    473         <tr>
    474           <td class="paramkey"></td>
    475           <td></td>
    476           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    477           <td class="paramname"><em>r</em>&#160;</td>
    478         </tr>
    479         <tr>
    480           <td></td>
    481           <td>)</td>
    482           <td></td><td></td>
    483         </tr>
    484       </table>
    485 </div><div class="memdoc">
    486 
    487 <p>Calculates the multiplicative inverse of a finite field element. </p>
    488 <dl class="params"><dt>Parameters</dt><dd>
    489   <table class="params">
    490     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    491     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The element. </td></tr>
    492     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The inverted element.</td></tr>
    493   </table>
    494   </dd>
    495 </dl>
    496 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    497 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    498 <dd>
    499 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    500 
    501 </div>
    502 </div>
    503 <a id="gaed2acb8583e9c9f6b49fdb660c672625"></a>
    504 <h2 class="memtitle"><span class="permalink"><a href="#gaed2acb8583e9c9f6b49fdb660c672625">&#9670;&nbsp;</a></span>FfIsEqual()</h2>
    505 
    506 <div class="memitem">
    507 <div class="memproto">
    508       <table class="memname">
    509         <tr>
    510           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfIsEqual </td>
    511           <td>(</td>
    512           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    513           <td class="paramname"><em>ff</em>, </td>
    514         </tr>
    515         <tr>
    516           <td class="paramkey"></td>
    517           <td></td>
    518           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    519           <td class="paramname"><em>a</em>, </td>
    520         </tr>
    521         <tr>
    522           <td class="paramkey"></td>
    523           <td></td>
    524           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    525           <td class="paramname"><em>b</em>, </td>
    526         </tr>
    527         <tr>
    528           <td class="paramkey"></td>
    529           <td></td>
    530           <td class="paramtype"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> *&#160;</td>
    531           <td class="paramname"><em>is_equal</em>&#160;</td>
    532         </tr>
    533         <tr>
    534           <td></td>
    535           <td>)</td>
    536           <td></td><td></td>
    537         </tr>
    538       </table>
    539 </div><div class="memdoc">
    540 
    541 <p>Checks if two finite field elements are equal. </p>
    542 <dl class="params"><dt>Parameters</dt><dd>
    543   <table class="params">
    544     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    545     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>An element to check. </td></tr>
    546     <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Another element to check. </td></tr>
    547     <tr><td class="paramdir">[out]</td><td class="paramname">is_equal</td><td>The result of the check.</td></tr>
    548   </table>
    549   </dd>
    550 </dl>
    551 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    552 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd>
    553 <dd>
    554 <a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl>
    555 
    556 </div>
    557 </div>
    558 <a id="ga20d9140e5670d679ef8183d9b5115f53"></a>
    559 <h2 class="memtitle"><span class="permalink"><a href="#ga20d9140e5670d679ef8183d9b5115f53">&#9670;&nbsp;</a></span>FfIsZero()</h2>
    560 
    561 <div class="memitem">
    562 <div class="memproto">
    563       <table class="memname">
    564         <tr>
    565           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfIsZero </td>
    566           <td>(</td>
    567           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    568           <td class="paramname"><em>ff</em>, </td>
    569         </tr>
    570         <tr>
    571           <td class="paramkey"></td>
    572           <td></td>
    573           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    574           <td class="paramname"><em>a</em>, </td>
    575         </tr>
    576         <tr>
    577           <td class="paramkey"></td>
    578           <td></td>
    579           <td class="paramtype"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> *&#160;</td>
    580           <td class="paramname"><em>is_zero</em>&#160;</td>
    581         </tr>
    582         <tr>
    583           <td></td>
    584           <td>)</td>
    585           <td></td><td></td>
    586         </tr>
    587       </table>
    588 </div><div class="memdoc">
    589 
    590 <p>Checks if given finite field element is the additive identity (zero). </p>
    591 <dl class="params"><dt>Parameters</dt><dd>
    592   <table class="params">
    593     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    594     <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The element. </td></tr>
    595     <tr><td class="paramdir">[out]</td><td class="paramname">is_zero</td><td>The result of the check.</td></tr>
    596   </table>
    597   </dd>
    598 </dl>
    599 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    600 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    601 <dd>
    602 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    603 
    604 </div>
    605 </div>
    606 <a id="ga4613a75bd001a974b3e3e494c3a112a5"></a>
    607 <h2 class="memtitle"><span class="permalink"><a href="#ga4613a75bd001a974b3e3e494c3a112a5">&#9670;&nbsp;</a></span>FfMul()</h2>
    608 
    609 <div class="memitem">
    610 <div class="memproto">
    611       <table class="memname">
    612         <tr>
    613           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfMul </td>
    614           <td>(</td>
    615           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    616           <td class="paramname"><em>ff</em>, </td>
    617         </tr>
    618         <tr>
    619           <td class="paramkey"></td>
    620           <td></td>
    621           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    622           <td class="paramname"><em>a</em>, </td>
    623         </tr>
    624         <tr>
    625           <td class="paramkey"></td>
    626           <td></td>
    627           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    628           <td class="paramname"><em>b</em>, </td>
    629         </tr>
    630         <tr>
    631           <td class="paramkey"></td>
    632           <td></td>
    633           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    634           <td class="paramname"><em>r</em>&#160;</td>
    635         </tr>
    636         <tr>
    637           <td></td>
    638           <td>)</td>
    639           <td></td><td></td>
    640         </tr>
    641       </table>
    642 </div><div class="memdoc">
    643 
    644 <p>Multiplies two finite field elements. </p>
    645 <dl class="params"><dt>Parameters</dt><dd>
    646   <table class="params">
    647     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    648     <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The first operand to be multplied. </td></tr>
    649     <tr><td class="paramdir">[out]</td><td class="paramname">b</td><td>The second operand to be multiplied. If ff is an extension field of a field F then this parameter may be an element of either ff or F. </td></tr>
    650     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of multiplying a and b.</td></tr>
    651   </table>
    652   </dd>
    653 </dl>
    654 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    655 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    656 <dd>
    657 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    658 
    659 </div>
    660 </div>
    661 <a id="ga84d21decc1c957bcf6e98e1492eb2ac3"></a>
    662 <h2 class="memtitle"><span class="permalink"><a href="#ga84d21decc1c957bcf6e98e1492eb2ac3">&#9670;&nbsp;</a></span>FfMultiExp()</h2>
    663 
    664 <div class="memitem">
    665 <div class="memproto">
    666       <table class="memname">
    667         <tr>
    668           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfMultiExp </td>
    669           <td>(</td>
    670           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    671           <td class="paramname"><em>ff</em>, </td>
    672         </tr>
    673         <tr>
    674           <td class="paramkey"></td>
    675           <td></td>
    676           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const **&#160;</td>
    677           <td class="paramname"><em>a</em>, </td>
    678         </tr>
    679         <tr>
    680           <td class="paramkey"></td>
    681           <td></td>
    682           <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const **&#160;</td>
    683           <td class="paramname"><em>b</em>, </td>
    684         </tr>
    685         <tr>
    686           <td class="paramkey"></td>
    687           <td></td>
    688           <td class="paramtype">size_t&#160;</td>
    689           <td class="paramname"><em>m</em>, </td>
    690         </tr>
    691         <tr>
    692           <td class="paramkey"></td>
    693           <td></td>
    694           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    695           <td class="paramname"><em>r</em>&#160;</td>
    696         </tr>
    697         <tr>
    698           <td></td>
    699           <td>)</td>
    700           <td></td><td></td>
    701         </tr>
    702       </table>
    703 </div><div class="memdoc">
    704 
    705 <p>Multi-exponentiates finite field elements. </p>
    706 <p>Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m &gt; 1</p>
    707 <dl class="params"><dt>Parameters</dt><dd>
    708   <table class="params">
    709     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr>
    710     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr>
    711     <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. </td></tr>
    712     <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr>
    713     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising each a to the corresponding power b and multiplying the results.</td></tr>
    714   </table>
    715   </dd>
    716 </dl>
    717 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    718 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    719 <dd>
    720 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    721 
    722 </div>
    723 </div>
    724 <a id="ga1ef46fc83f9c11263a2aa1ec906c9144"></a>
    725 <h2 class="memtitle"><span class="permalink"><a href="#ga1ef46fc83f9c11263a2aa1ec906c9144">&#9670;&nbsp;</a></span>FfMultiExpBn()</h2>
    726 
    727 <div class="memitem">
    728 <div class="memproto">
    729       <table class="memname">
    730         <tr>
    731           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfMultiExpBn </td>
    732           <td>(</td>
    733           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    734           <td class="paramname"><em>ff</em>, </td>
    735         </tr>
    736         <tr>
    737           <td class="paramkey"></td>
    738           <td></td>
    739           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const **&#160;</td>
    740           <td class="paramname"><em>a</em>, </td>
    741         </tr>
    742         <tr>
    743           <td class="paramkey"></td>
    744           <td></td>
    745           <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const **&#160;</td>
    746           <td class="paramname"><em>b</em>, </td>
    747         </tr>
    748         <tr>
    749           <td class="paramkey"></td>
    750           <td></td>
    751           <td class="paramtype">size_t&#160;</td>
    752           <td class="paramname"><em>m</em>, </td>
    753         </tr>
    754         <tr>
    755           <td class="paramkey"></td>
    756           <td></td>
    757           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    758           <td class="paramname"><em>r</em>&#160;</td>
    759         </tr>
    760         <tr>
    761           <td></td>
    762           <td>)</td>
    763           <td></td><td></td>
    764         </tr>
    765       </table>
    766 </div><div class="memdoc">
    767 
    768 <p>Multi-exponentiates finite field elements. </p>
    769 <p>Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m &gt; 1</p>
    770 <dl class="params"><dt>Parameters</dt><dd>
    771   <table class="params">
    772     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr>
    773     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr>
    774     <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. </td></tr>
    775     <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr>
    776     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising each a to the corresponding power b and multiplying the results.</td></tr>
    777   </table>
    778   </dd>
    779 </dl>
    780 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    781 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    782 <dd>
    783 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    784 
    785 </div>
    786 </div>
    787 <a id="gae7a8c7503b6fc7a41bcaab4d45ca37b2"></a>
    788 <h2 class="memtitle"><span class="permalink"><a href="#gae7a8c7503b6fc7a41bcaab4d45ca37b2">&#9670;&nbsp;</a></span>FfNeg()</h2>
    789 
    790 <div class="memitem">
    791 <div class="memproto">
    792       <table class="memname">
    793         <tr>
    794           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfNeg </td>
    795           <td>(</td>
    796           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    797           <td class="paramname"><em>ff</em>, </td>
    798         </tr>
    799         <tr>
    800           <td class="paramkey"></td>
    801           <td></td>
    802           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    803           <td class="paramname"><em>a</em>, </td>
    804         </tr>
    805         <tr>
    806           <td class="paramkey"></td>
    807           <td></td>
    808           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    809           <td class="paramname"><em>r</em>&#160;</td>
    810         </tr>
    811         <tr>
    812           <td></td>
    813           <td>)</td>
    814           <td></td><td></td>
    815         </tr>
    816       </table>
    817 </div><div class="memdoc">
    818 
    819 <p>Calculates the additive inverse of a finite field element. </p>
    820 <dl class="params"><dt>Parameters</dt><dd>
    821   <table class="params">
    822     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    823     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The element. </td></tr>
    824     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The inverted element.</td></tr>
    825   </table>
    826   </dd>
    827 </dl>
    828 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    829 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    830 <dd>
    831 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    832 
    833 </div>
    834 </div>
    835 <a id="ga39892fe2ab431e166dbbcf57756660f6"></a>
    836 <h2 class="memtitle"><span class="permalink"><a href="#ga39892fe2ab431e166dbbcf57756660f6">&#9670;&nbsp;</a></span>FfSqrt()</h2>
    837 
    838 <div class="memitem">
    839 <div class="memproto">
    840       <table class="memname">
    841         <tr>
    842           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfSqrt </td>
    843           <td>(</td>
    844           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    845           <td class="paramname"><em>ff</em>, </td>
    846         </tr>
    847         <tr>
    848           <td class="paramkey"></td>
    849           <td></td>
    850           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    851           <td class="paramname"><em>a</em>, </td>
    852         </tr>
    853         <tr>
    854           <td class="paramkey"></td>
    855           <td></td>
    856           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    857           <td class="paramname"><em>r</em>&#160;</td>
    858         </tr>
    859         <tr>
    860           <td></td>
    861           <td>)</td>
    862           <td></td><td></td>
    863         </tr>
    864       </table>
    865 </div><div class="memdoc">
    866 
    867 <p>Finds a square root of a finite field element. </p>
    868 <p>This function calculates the square root by the method of false position.</p>
    869 <dl class="params"><dt>Parameters</dt><dd>
    870   <table class="params">
    871     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr>
    872     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr>
    873     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising each a to the corresponding power b and multiplying the results.</td></tr>
    874   </table>
    875   </dd>
    876 </dl>
    877 <dl class="retval"><dt>Return values</dt><dd>
    878   <table class="retval">
    879     <tr><td class="paramname">kEpidMathQuadraticNonResidueError</td><td>No square root could be found. </td></tr>
    880   </table>
    881   </dd>
    882 </dl>
    883 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    884 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    885 <dd>
    886 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    887 
    888 </div>
    889 </div>
    890 <a id="ga0d0c31a22bbfb665a16b2d25b0cd2634"></a>
    891 <h2 class="memtitle"><span class="permalink"><a href="#ga0d0c31a22bbfb665a16b2d25b0cd2634">&#9670;&nbsp;</a></span>FfSscmMultiExp()</h2>
    892 
    893 <div class="memitem">
    894 <div class="memproto">
    895       <table class="memname">
    896         <tr>
    897           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfSscmMultiExp </td>
    898           <td>(</td>
    899           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    900           <td class="paramname"><em>ff</em>, </td>
    901         </tr>
    902         <tr>
    903           <td class="paramkey"></td>
    904           <td></td>
    905           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const **&#160;</td>
    906           <td class="paramname"><em>a</em>, </td>
    907         </tr>
    908         <tr>
    909           <td class="paramkey"></td>
    910           <td></td>
    911           <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const **&#160;</td>
    912           <td class="paramname"><em>b</em>, </td>
    913         </tr>
    914         <tr>
    915           <td class="paramkey"></td>
    916           <td></td>
    917           <td class="paramtype">size_t&#160;</td>
    918           <td class="paramname"><em>m</em>, </td>
    919         </tr>
    920         <tr>
    921           <td class="paramkey"></td>
    922           <td></td>
    923           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    924           <td class="paramname"><em>r</em>&#160;</td>
    925         </tr>
    926         <tr>
    927           <td></td>
    928           <td>)</td>
    929           <td></td><td></td>
    930         </tr>
    931       </table>
    932 </div><div class="memdoc">
    933 
    934 <p>Software side-channel mitigated implementation of FfMultiExp. </p>
    935 <p>Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m &gt; 1</p>
    936 <dl class="section attention"><dt>Attention</dt><dd>The reference implementation of FfSscmMultiExp calls FfMultiExp directly because the implementation of FfMultiExp is already side channel mitigated. Implementers providing their own versions of this function are responsible for ensuring that FfSscmMultiExp is side channel mitigated per section 8 of the Intel(R) EPID 2.0 spec.</dd></dl>
    937 <dl class="params"><dt>Parameters</dt><dd>
    938   <table class="params">
    939     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation. </td></tr>
    940     <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr>
    941     <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. </td></tr>
    942     <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr>
    943     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising each a to the corresponding power b and multiplying the results.</td></tr>
    944   </table>
    945   </dd>
    946 </dl>
    947 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
    948 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
    949 <dd>
    950 <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl>
    951 
    952 </div>
    953 </div>
    954 <a id="ga59d20610f245ff4bc3a17b7bfe289991"></a>
    955 <h2 class="memtitle"><span class="permalink"><a href="#ga59d20610f245ff4bc3a17b7bfe289991">&#9670;&nbsp;</a></span>FfSub()</h2>
    956 
    957 <div class="memitem">
    958 <div class="memproto">
    959       <table class="memname">
    960         <tr>
    961           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfSub </td>
    962           <td>(</td>
    963           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
    964           <td class="paramname"><em>ff</em>, </td>
    965         </tr>
    966         <tr>
    967           <td class="paramkey"></td>
    968           <td></td>
    969           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    970           <td class="paramname"><em>a</em>, </td>
    971         </tr>
    972         <tr>
    973           <td class="paramkey"></td>
    974           <td></td>
    975           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
    976           <td class="paramname"><em>b</em>, </td>
    977         </tr>
    978         <tr>
    979           <td class="paramkey"></td>
    980           <td></td>
    981           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
    982           <td class="paramname"><em>r</em>&#160;</td>
    983         </tr>
    984         <tr>
    985           <td></td>
    986           <td>)</td>
    987           <td></td><td></td>
    988         </tr>
    989       </table>
    990 </div><div class="memdoc">
    991 
    992 <p>Subtracts two finite field elements. </p>
    993 <dl class="section note"><dt>Note</dt><dd>Only needed for Intel(R) EPID 1.1 verification.</dd></dl>
    994 <dl class="params"><dt>Parameters</dt><dd>
    995   <table class="params">
    996     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
    997     <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The first operand to use in subtraction. </td></tr>
    998     <tr><td class="paramdir">[out]</td><td class="paramname">b</td><td>The second operand to use in subtraction. </td></tr>
    999     <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of subtracting a and b.</td></tr>
   1000   </table>
   1001   </dd>
   1002 </dl>
   1003 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
   1004 
   1005 </div>
   1006 </div>
   1007 <a id="ga90b2c192708973b54b7a3e82b34536ed"></a>
   1008 <h2 class="memtitle"><span class="permalink"><a href="#ga90b2c192708973b54b7a3e82b34536ed">&#9670;&nbsp;</a></span>InitFfElementFromBn()</h2>
   1009 
   1010 <div class="memitem">
   1011 <div class="memproto">
   1012       <table class="memname">
   1013         <tr>
   1014           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> InitFfElementFromBn </td>
   1015           <td>(</td>
   1016           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
   1017           <td class="paramname"><em>ff</em>, </td>
   1018         </tr>
   1019         <tr>
   1020           <td class="paramkey"></td>
   1021           <td></td>
   1022           <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> *&#160;</td>
   1023           <td class="paramname"><em>bn</em>, </td>
   1024         </tr>
   1025         <tr>
   1026           <td class="paramkey"></td>
   1027           <td></td>
   1028           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
   1029           <td class="paramname"><em>ff_elem</em>&#160;</td>
   1030         </tr>
   1031         <tr>
   1032           <td></td>
   1033           <td>)</td>
   1034           <td></td><td></td>
   1035         </tr>
   1036       </table>
   1037 </div><div class="memdoc">
   1038 
   1039 <p>Initializes an existing FfElement from a BigNum. </p>
   1040 <dl class="params"><dt>Parameters</dt><dd>
   1041   <table class="params">
   1042     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. Must be a Prime Field. </td></tr>
   1043     <tr><td class="paramdir">[in]</td><td class="paramname">bn</td><td>The value to read. </td></tr>
   1044     <tr><td class="paramdir">[out]</td><td class="paramname">ff_elem</td><td>The target FfElement.</td></tr>
   1045   </table>
   1046   </dd>
   1047 </dl>
   1048 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
   1049 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd>
   1050 <dd>
   1051 <a class="el" href="group___finite_field_primitives.html#gaa3c1f7515dd823ddad8764091ebc665f" title="Serializes a finite field element to a string. ">WriteFfElement</a> </dd></dl>
   1052 
   1053 </div>
   1054 </div>
   1055 <a id="gacc54f315ede2dbeb8c5990c024a0de6c"></a>
   1056 <h2 class="memtitle"><span class="permalink"><a href="#gacc54f315ede2dbeb8c5990c024a0de6c">&#9670;&nbsp;</a></span>NewFfElement()</h2>
   1057 
   1058 <div class="memitem">
   1059 <div class="memproto">
   1060       <table class="memname">
   1061         <tr>
   1062           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFfElement </td>
   1063           <td>(</td>
   1064           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const *&#160;</td>
   1065           <td class="paramname"><em>ff</em>, </td>
   1066         </tr>
   1067         <tr>
   1068           <td class="paramkey"></td>
   1069           <td></td>
   1070           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> **&#160;</td>
   1071           <td class="paramname"><em>new_ff_elem</em>&#160;</td>
   1072         </tr>
   1073         <tr>
   1074           <td></td>
   1075           <td>)</td>
   1076           <td></td><td></td>
   1077         </tr>
   1078       </table>
   1079 </div><div class="memdoc">
   1080 
   1081 <p>Creates a new finite field element. </p>
   1082 <p>Allocates memory and creates a new finite field element.</p>
   1083 <p>Use <a class="el" href="group___finite_field_primitives.html#ga1bad3c6945d1d709fceb07a1dd03000e" title="Frees a previously allocated FfElement. ">DeleteFfElement()</a> to free memory.</p>
   1084 <dl class="params"><dt>Parameters</dt><dd>
   1085   <table class="params">
   1086     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
   1087     <tr><td class="paramdir">[out]</td><td class="paramname">new_ff_elem</td><td>The Newly constructed finite field element.</td></tr>
   1088   </table>
   1089   </dd>
   1090 </dl>
   1091 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
   1092 <dl class="section attention"><dt>Attention</dt><dd>It is the responsibility of the caller to ensure that ff exists for the entire lifetime of the new FfElement.</dd></dl>
   1093 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c" title="Creates new finite field. ">NewFiniteField</a> </dd>
   1094 <dd>
   1095 <a class="el" href="group___finite_field_primitives.html#ga1bad3c6945d1d709fceb07a1dd03000e" title="Frees a previously allocated FfElement. ">DeleteFfElement</a> </dd></dl>
   1096 
   1097 </div>
   1098 </div>
   1099 <a id="ga7d99fdc5e4573668a5744e49df7ab67c"></a>
   1100 <h2 class="memtitle"><span class="permalink"><a href="#ga7d99fdc5e4573668a5744e49df7ab67c">&#9670;&nbsp;</a></span>NewFiniteField()</h2>
   1101 
   1102 <div class="memitem">
   1103 <div class="memproto">
   1104       <table class="memname">
   1105         <tr>
   1106           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFiniteField </td>
   1107           <td>(</td>
   1108           <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const *&#160;</td>
   1109           <td class="paramname"><em>prime</em>, </td>
   1110         </tr>
   1111         <tr>
   1112           <td class="paramkey"></td>
   1113           <td></td>
   1114           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **&#160;</td>
   1115           <td class="paramname"><em>ff</em>&#160;</td>
   1116         </tr>
   1117         <tr>
   1118           <td></td>
   1119           <td>)</td>
   1120           <td></td><td></td>
   1121         </tr>
   1122       </table>
   1123 </div><div class="memdoc">
   1124 
   1125 <p>Creates new finite field. </p>
   1126 <p>Allocates memory and creates a new finite field GF(prime).</p>
   1127 <p>Use <a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField()</a> to free memory.</p>
   1128 <dl class="params"><dt>Parameters</dt><dd>
   1129   <table class="params">
   1130     <tr><td class="paramdir">[in]</td><td class="paramname">prime</td><td>The order of the finite field. </td></tr>
   1131     <tr><td class="paramdir">[out]</td><td class="paramname">ff</td><td>The newly constructed finite field.</td></tr>
   1132   </table>
   1133   </dd>
   1134 </dl>
   1135 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
   1136 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField</a> </dd></dl>
   1137 
   1138 </div>
   1139 </div>
   1140 <a id="ga83041e3be9984a4bd8f1021934bfa3a2"></a>
   1141 <h2 class="memtitle"><span class="permalink"><a href="#ga83041e3be9984a4bd8f1021934bfa3a2">&#9670;&nbsp;</a></span>NewFiniteFieldViaBinomalExtension()</h2>
   1142 
   1143 <div class="memitem">
   1144 <div class="memproto">
   1145       <table class="memname">
   1146         <tr>
   1147           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFiniteFieldViaBinomalExtension </td>
   1148           <td>(</td>
   1149           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const *&#160;</td>
   1150           <td class="paramname"><em>ground_field</em>, </td>
   1151         </tr>
   1152         <tr>
   1153           <td class="paramkey"></td>
   1154           <td></td>
   1155           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
   1156           <td class="paramname"><em>ground_element</em>, </td>
   1157         </tr>
   1158         <tr>
   1159           <td class="paramkey"></td>
   1160           <td></td>
   1161           <td class="paramtype">int&#160;</td>
   1162           <td class="paramname"><em>degree</em>, </td>
   1163         </tr>
   1164         <tr>
   1165           <td class="paramkey"></td>
   1166           <td></td>
   1167           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **&#160;</td>
   1168           <td class="paramname"><em>ff</em>&#160;</td>
   1169         </tr>
   1170         <tr>
   1171           <td></td>
   1172           <td>)</td>
   1173           <td></td><td></td>
   1174         </tr>
   1175       </table>
   1176 </div><div class="memdoc">
   1177 
   1178 <p>Creates a new finite field using binomial extension. </p>
   1179 <p>Allocates memory and creates a finite field using binomial extension.</p>
   1180 <p>Use <a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField()</a> to free memory.</p>
   1181 <dl class="params"><dt>Parameters</dt><dd>
   1182   <table class="params">
   1183     <tr><td class="paramdir">[in]</td><td class="paramname">ground_field</td><td>The ground field. </td></tr>
   1184     <tr><td class="paramdir">[in]</td><td class="paramname">ground_element</td><td>The low-order term of the extension. </td></tr>
   1185     <tr><td class="paramdir">[in]</td><td class="paramname">degree</td><td>The degree of the extension. </td></tr>
   1186     <tr><td class="paramdir">[out]</td><td class="paramname">ff</td><td>The newly constructed finite field.</td></tr>
   1187   </table>
   1188   </dd>
   1189 </dl>
   1190 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
   1191 <dl class="section attention"><dt>Attention</dt><dd>It is the responsibility of the caller to ensure that ground_field exists for the entire lifetime of the new FiniteField.</dd></dl>
   1192 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField</a> </dd></dl>
   1193 
   1194 </div>
   1195 </div>
   1196 <a id="gae69af62a03179718cac81b004549c598"></a>
   1197 <h2 class="memtitle"><span class="permalink"><a href="#gae69af62a03179718cac81b004549c598">&#9670;&nbsp;</a></span>NewFiniteFieldViaPolynomialExtension()</h2>
   1198 
   1199 <div class="memitem">
   1200 <div class="memproto">
   1201       <table class="memname">
   1202         <tr>
   1203           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFiniteFieldViaPolynomialExtension </td>
   1204           <td>(</td>
   1205           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const *&#160;</td>
   1206           <td class="paramname"><em>ground_field</em>, </td>
   1207         </tr>
   1208         <tr>
   1209           <td class="paramkey"></td>
   1210           <td></td>
   1211           <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const *&#160;</td>
   1212           <td class="paramname"><em>irr_polynomial</em>, </td>
   1213         </tr>
   1214         <tr>
   1215           <td class="paramkey"></td>
   1216           <td></td>
   1217           <td class="paramtype">int&#160;</td>
   1218           <td class="paramname"><em>degree</em>, </td>
   1219         </tr>
   1220         <tr>
   1221           <td class="paramkey"></td>
   1222           <td></td>
   1223           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> **&#160;</td>
   1224           <td class="paramname"><em>ff</em>&#160;</td>
   1225         </tr>
   1226         <tr>
   1227           <td></td>
   1228           <td>)</td>
   1229           <td></td><td></td>
   1230         </tr>
   1231       </table>
   1232 </div><div class="memdoc">
   1233 
   1234 <p>Creates a new finite field using polynomial extension. </p>
   1235 <p>Allocates memory and creates a finite field using polynomial extension.</p>
   1236 <p>Use <a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField()</a> to free memory.</p>
   1237 <dl class="section note"><dt>Note</dt><dd>Only needed for Intel(R) EPID 1.1 verification.</dd></dl>
   1238 <dl class="params"><dt>Parameters</dt><dd>
   1239   <table class="params">
   1240     <tr><td class="paramdir">[in]</td><td class="paramname">ground_field</td><td>The ground field. </td></tr>
   1241     <tr><td class="paramdir">[in]</td><td class="paramname">irr_polynomial</td><td>Array with coefficients of the irreducible polynomial. Number of elements must be equal to the degree of the extension. </td></tr>
   1242     <tr><td class="paramdir">[in]</td><td class="paramname">degree</td><td>The degree of the extension. </td></tr>
   1243     <tr><td class="paramdir">[out]</td><td class="paramname">ff</td><td>The newly constructed finite field.</td></tr>
   1244   </table>
   1245   </dd>
   1246 </dl>
   1247 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
   1248 <dl class="section attention"><dt>Attention</dt><dd>It is the responsibility of the caller to ensure that ground_field exists for the entire lifetime of the new FiniteField.</dd></dl>
   1249 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField</a> </dd></dl>
   1250 
   1251 </div>
   1252 </div>
   1253 <a id="ga8a143a5a815a62f4947be2de1653c50f"></a>
   1254 <h2 class="memtitle"><span class="permalink"><a href="#ga8a143a5a815a62f4947be2de1653c50f">&#9670;&nbsp;</a></span>ReadFfElement()</h2>
   1255 
   1256 <div class="memitem">
   1257 <div class="memproto">
   1258       <table class="memname">
   1259         <tr>
   1260           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> ReadFfElement </td>
   1261           <td>(</td>
   1262           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
   1263           <td class="paramname"><em>ff</em>, </td>
   1264         </tr>
   1265         <tr>
   1266           <td class="paramkey"></td>
   1267           <td></td>
   1268           <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a>&#160;</td>
   1269           <td class="paramname"><em>ff_elem_str</em>, </td>
   1270         </tr>
   1271         <tr>
   1272           <td class="paramkey"></td>
   1273           <td></td>
   1274           <td class="paramtype">size_t&#160;</td>
   1275           <td class="paramname"><em>strlen</em>, </td>
   1276         </tr>
   1277         <tr>
   1278           <td class="paramkey"></td>
   1279           <td></td>
   1280           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> *&#160;</td>
   1281           <td class="paramname"><em>ff_elem</em>&#160;</td>
   1282         </tr>
   1283         <tr>
   1284           <td></td>
   1285           <td>)</td>
   1286           <td></td><td></td>
   1287         </tr>
   1288       </table>
   1289 </div><div class="memdoc">
   1290 
   1291 <p>Deserializes a FfElement from a string. </p>
   1292 <dl class="params"><dt>Parameters</dt><dd>
   1293   <table class="params">
   1294     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
   1295     <tr><td class="paramdir">[in]</td><td class="paramname">ff_elem_str</td><td>The serialized value. </td></tr>
   1296     <tr><td class="paramdir">[in]</td><td class="paramname">strlen</td><td>The size of ff_elem_str in bytes. </td></tr>
   1297     <tr><td class="paramdir">[out]</td><td class="paramname">ff_elem</td><td>The target FfElement.</td></tr>
   1298   </table>
   1299   </dd>
   1300 </dl>
   1301 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
   1302 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd>
   1303 <dd>
   1304 <a class="el" href="group___finite_field_primitives.html#gaa3c1f7515dd823ddad8764091ebc665f" title="Serializes a finite field element to a string. ">WriteFfElement</a> </dd></dl>
   1305 
   1306 </div>
   1307 </div>
   1308 <a id="gaa3c1f7515dd823ddad8764091ebc665f"></a>
   1309 <h2 class="memtitle"><span class="permalink"><a href="#gaa3c1f7515dd823ddad8764091ebc665f">&#9670;&nbsp;</a></span>WriteFfElement()</h2>
   1310 
   1311 <div class="memitem">
   1312 <div class="memproto">
   1313       <table class="memname">
   1314         <tr>
   1315           <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> WriteFfElement </td>
   1316           <td>(</td>
   1317           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> *&#160;</td>
   1318           <td class="paramname"><em>ff</em>, </td>
   1319         </tr>
   1320         <tr>
   1321           <td class="paramkey"></td>
   1322           <td></td>
   1323           <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *&#160;</td>
   1324           <td class="paramname"><em>ff_elem</em>, </td>
   1325         </tr>
   1326         <tr>
   1327           <td class="paramkey"></td>
   1328           <td></td>
   1329           <td class="paramtype"><a class="el" href="group___epid_types.html#ga3315fb24f4c5783b6d6eb107933390b0">OctStr</a>&#160;</td>
   1330           <td class="paramname"><em>ff_elem_str</em>, </td>
   1331         </tr>
   1332         <tr>
   1333           <td class="paramkey"></td>
   1334           <td></td>
   1335           <td class="paramtype">size_t&#160;</td>
   1336           <td class="paramname"><em>strlen</em>&#160;</td>
   1337         </tr>
   1338         <tr>
   1339           <td></td>
   1340           <td>)</td>
   1341           <td></td><td></td>
   1342         </tr>
   1343       </table>
   1344 </div><div class="memdoc">
   1345 
   1346 <p>Serializes a finite field element to a string. </p>
   1347 <dl class="params"><dt>Parameters</dt><dd>
   1348   <table class="params">
   1349     <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr>
   1350     <tr><td class="paramdir">[in]</td><td class="paramname">ff_elem</td><td>The FfElement to be serialized. </td></tr>
   1351     <tr><td class="paramdir">[out]</td><td class="paramname">ff_elem_str</td><td>The target string. </td></tr>
   1352     <tr><td class="paramdir">[in]</td><td class="paramname">strlen</td><td>The size of ff_elem_str in bytes.</td></tr>
   1353   </table>
   1354   </dd>
   1355 </dl>
   1356 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
   1357 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd>
   1358 <dd>
   1359 <a class="el" href="struct_fp_elem_str.html" title="a number in [0, p-1] ">FpElemStr</a> </dd>
   1360 <dd>
   1361 <a class="el" href="struct_fq_elem_str.html" title="a number in [0, q-1] ">FqElemStr</a> </dd>
   1362 <dd>
   1363 <a class="el" href="struct_gt_elem_str.html" title="Serialized GT element. ">GtElemStr</a> </dd></dl>
   1364 
   1365 </div>
   1366 </div>
   1367 </div><!-- contents -->
   1368 </div><!-- doc-content -->
   1369 <!-- HTML footer for doxygen 1.8.10-->
   1370 <!-- start footer part -->
   1371 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   1372   <ul>
   1373     <li class="footer">
   1374       &copy; 2016-2017 Intel Corporation
   1375     </li>
   1376   </ul>
   1377 </div>
   1378 </body>
   1379 </html>
   1380