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® 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&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® Enhanced Privacy ID SDK</a> 35  <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&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> | 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&nbsp;</a> » <a class="el" href="group___epid_common.html">common</a> » <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> </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"> </td><td class="mdescRight">A finite field. <br /></td></tr> 78 <tr class="separator:gab281b24e336a8b3d7d90079d862d969e"><td class="memSeparator" colspan="2"> </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> </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"> </td><td class="mdescRight">An element in a finite field. <br /></td></tr> 82 <tr class="separator:ga6cff5c7c06b07a87442b810ccc0a86fa"><td class="memSeparator" colspan="2"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </td></tr> 95 <tr class="memitem:gacbdd2871ecf93dadaac9d2c5b16e1e5f"><td class="memItemLeft" align="right" valign="top">void </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"> </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"> </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> </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"> </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"> </td></tr> 101 <tr class="memitem:ga1bad3c6945d1d709fceb07a1dd03000e"><td class="memItemLeft" align="right" valign="top">void </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </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">◆ </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> ** </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">◆ </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> ** </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">◆ </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> * </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 * </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 * </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> * </td> 246 <td class="paramname"><em>r</em> </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">◆ </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> * </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 * </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 * </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> * </td> 298 <td class="paramname"><em>r</em> </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">◆ </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> * </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 * </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> </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 * </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> * </td> 359 <td class="paramname"><em>r</em> </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">◆ </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> * </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> </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 </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> </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> * </td> 427 <td class="paramname"><em>r</em> </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">◆ </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> * </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 * </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> * </td> 477 <td class="paramname"><em>r</em> </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">◆ </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> * </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 * </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 * </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> * </td> 531 <td class="paramname"><em>is_equal</em> </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">◆ </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> * </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 * </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> * </td> 580 <td class="paramname"><em>is_zero</em> </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">◆ </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> * </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 * </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 * </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> * </td> 634 <td class="paramname"><em>r</em> </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">◆ </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> * </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 ** </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 ** </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 </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> * </td> 695 <td class="paramname"><em>r</em> </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 > 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">◆ </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> * </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 ** </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 ** </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 </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> * </td> 758 <td class="paramname"><em>r</em> </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 > 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">◆ </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> * </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 * </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> * </td> 809 <td class="paramname"><em>r</em> </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">◆ </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> * </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 * </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> * </td> 857 <td class="paramname"><em>r</em> </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">◆ </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> * </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 ** </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 ** </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 </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> * </td> 924 <td class="paramname"><em>r</em> </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 > 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">◆ </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> * </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 * </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 * </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> * </td> 982 <td class="paramname"><em>r</em> </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">◆ </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> * </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> * </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> * </td> 1029 <td class="paramname"><em>ff_elem</em> </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">◆ </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 * </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> ** </td> 1071 <td class="paramname"><em>new_ff_elem</em> </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">◆ </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 * </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> ** </td> 1115 <td class="paramname"><em>ff</em> </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">◆ </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 * </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 * </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 </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> ** </td> 1168 <td class="paramname"><em>ff</em> </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">◆ </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 * </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 * </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 </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> ** </td> 1224 <td class="paramname"><em>ff</em> </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">◆ </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> * </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> </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 </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> * </td> 1281 <td class="paramname"><em>ff_elem</em> </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">◆ </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> * </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 * </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> </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 </td> 1336 <td class="paramname"><em>strlen</em> </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 © 2016-2017 Intel Corporation 1375 </li> 1376 </ul> 1377 </div> 1378 </body> 1379 </html> 1380