<!-- HTML header for doxygen 1.8.10--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.14"/> <title>Intel® Enhanced Privacy ID SDK: finitefield</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="epidstyle.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname"><a onclick="storeLink('index.html')" id="projectlink" class="index.html" href="index.html">Intel® Enhanced Privacy ID SDK</a>  <span id="projectnumber">6.0.1</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.14 --> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('group___finite_field_primitives.html','');}); /* @license-end */ </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <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> </div><!--header--> <div class="contents"> <p>Finite field operations. <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:gab281b24e336a8b3d7d90079d862d969e"><td class="memItemLeft" align="right" valign="top"><a id="gab281b24e336a8b3d7d90079d862d969e"></a> 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> <tr class="memdesc:gab281b24e336a8b3d7d90079d862d969e"><td class="mdescLeft"> </td><td class="mdescRight">A finite field. <br /></td></tr> <tr class="separator:gab281b24e336a8b3d7d90079d862d969e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga6cff5c7c06b07a87442b810ccc0a86fa"><td class="memItemLeft" align="right" valign="top"><a id="ga6cff5c7c06b07a87442b810ccc0a86fa"></a> 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> <tr class="memdesc:ga6cff5c7c06b07a87442b810ccc0a86fa"><td class="mdescLeft"> </td><td class="mdescRight">An element in a finite field. <br /></td></tr> <tr class="separator:ga6cff5c7c06b07a87442b810ccc0a86fa"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <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> <tr class="memdesc:ga7d99fdc5e4573668a5744e49df7ab67c"><td class="mdescLeft"> </td><td class="mdescRight">Creates new finite field. <a href="#ga7d99fdc5e4573668a5744e49df7ab67c">More...</a><br /></td></tr> <tr class="separator:ga7d99fdc5e4573668a5744e49df7ab67c"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:ga83041e3be9984a4bd8f1021934bfa3a2"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:gae69af62a03179718cac81b004549c598"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:gacbdd2871ecf93dadaac9d2c5b16e1e5f"><td class="mdescLeft"> </td><td class="mdescRight">Frees a previously allocated FiniteField. <a href="#gacbdd2871ecf93dadaac9d2c5b16e1e5f">More...</a><br /></td></tr> <tr class="separator:gacbdd2871ecf93dadaac9d2c5b16e1e5f"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:gacc54f315ede2dbeb8c5990c024a0de6c"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:ga1bad3c6945d1d709fceb07a1dd03000e"><td class="mdescLeft"> </td><td class="mdescRight">Frees a previously allocated FfElement. <a href="#ga1bad3c6945d1d709fceb07a1dd03000e">More...</a><br /></td></tr> <tr class="separator:ga1bad3c6945d1d709fceb07a1dd03000e"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:ga8a143a5a815a62f4947be2de1653c50f"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:ga90b2c192708973b54b7a3e82b34536ed"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:gaa3c1f7515dd823ddad8764091ebc665f"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:gae7a8c7503b6fc7a41bcaab4d45ca37b2"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:ga26069d035d0f6ade33af2b5d5c14949a"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:ga1a6e6d3c2319bb24eae8670b021e223b"><td class="mdescLeft"> </td><td class="mdescRight">Adds two finite field elements. <a href="#ga1a6e6d3c2319bb24eae8670b021e223b">More...</a><br /></td></tr> <tr class="separator:ga1a6e6d3c2319bb24eae8670b021e223b"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:ga59d20610f245ff4bc3a17b7bfe289991"><td class="mdescLeft"> </td><td class="mdescRight">Subtracts two finite field elements. <a href="#ga59d20610f245ff4bc3a17b7bfe289991">More...</a><br /></td></tr> <tr class="separator:ga59d20610f245ff4bc3a17b7bfe289991"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:ga4613a75bd001a974b3e3e494c3a112a5"><td class="mdescLeft"> </td><td class="mdescRight">Multiplies two finite field elements. <a href="#ga4613a75bd001a974b3e3e494c3a112a5">More...</a><br /></td></tr> <tr class="separator:ga4613a75bd001a974b3e3e494c3a112a5"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:ga20d9140e5670d679ef8183d9b5115f53"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:gaf0ddbc1bad048d67771cba119eb44a6c"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:ga84d21decc1c957bcf6e98e1492eb2ac3"><td class="mdescLeft"> </td><td class="mdescRight">Multi-exponentiates finite field elements. <a href="#ga84d21decc1c957bcf6e98e1492eb2ac3">More...</a><br /></td></tr> <tr class="separator:ga84d21decc1c957bcf6e98e1492eb2ac3"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:ga1ef46fc83f9c11263a2aa1ec906c9144"><td class="mdescLeft"> </td><td class="mdescRight">Multi-exponentiates finite field elements. <a href="#ga1ef46fc83f9c11263a2aa1ec906c9144">More...</a><br /></td></tr> <tr class="separator:ga1ef46fc83f9c11263a2aa1ec906c9144"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:ga0d0c31a22bbfb665a16b2d25b0cd2634"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:gaed2acb8583e9c9f6b49fdb660c672625"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:gabd511d79d9cbd1899e59258f149102c5"><td class="memSeparator" colspan="2"> </td></tr> <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> <tr class="memdesc:ga6622db072782fd9e53b4d59dd3dbd8e8"><td class="mdescLeft"> </td><td class="mdescRight">Generate random finite field element. <a href="#ga6622db072782fd9e53b4d59dd3dbd8e8">More...</a><br /></td></tr> <tr class="separator:ga6622db072782fd9e53b4d59dd3dbd8e8"><td class="memSeparator" colspan="2"> </td></tr> <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> <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> <tr class="separator:ga39892fe2ab431e166dbbcf57756660f6"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>Finite field operations. </p> <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> <p>A simple example of a finite field is all integers from zero that are less than a given value.</p> <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> <h2 class="groupheader">Function Documentation</h2> <a id="ga1bad3c6945d1d709fceb07a1dd03000e"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga1bad3c6945d1d709fceb07a1dd03000e">◆ </a></span>DeleteFfElement()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void DeleteFfElement </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> ** </td> <td class="paramname"><em>ff_elem</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Frees a previously allocated FfElement. </p> <p>Frees memory pointed to by ff_elem. Nulls the pointer.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff_elem</td><td>The finite field element. Can be NULL.</td></tr> </table> </dd> </dl> <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> </div> </div> <a id="gacbdd2871ecf93dadaac9d2c5b16e1e5f"></a> <h2 class="memtitle"><span class="permalink"><a href="#gacbdd2871ecf93dadaac9d2c5b16e1e5f">◆ </a></span>DeleteFiniteField()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void DeleteFiniteField </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> ** </td> <td class="paramname"><em>ff</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Frees a previously allocated FiniteField. </p> <p>Frees memory pointed to by finite field. Nulls the pointer.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The Finite field. Can be NULL.</td></tr> </table> </dd> </dl> <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> </div> </div> <a id="ga1a6e6d3c2319bb24eae8670b021e223b"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga1a6e6d3c2319bb24eae8670b021e223b">◆ </a></span>FfAdd()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfAdd </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds two finite field elements. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The first operand to be added. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">b</td><td>The second operand to be added. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of adding a and b.</td></tr> </table> </dd> </dl> <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> </div> </div> <a id="gaf0ddbc1bad048d67771cba119eb44a6c"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaf0ddbc1bad048d67771cba119eb44a6c">◆ </a></span>FfExp()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfExp </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const * </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Raises an element of a finite field to a power. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The base. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The power. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising a to the power b.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga6622db072782fd9e53b4d59dd3dbd8e8"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga6622db072782fd9e53b4d59dd3dbd8e8">◆ </a></span>FfGetRandom()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfGetRandom </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const * </td> <td class="paramname"><em>low_bound</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> </td> <td class="paramname"><em>rnd_func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>rnd_param</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generate random finite field element. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field associated with the random finite field element. </td></tr> <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> <tr><td class="paramdir">[in]</td><td class="paramname">rnd_func</td><td>Random number generator. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">rnd_param</td><td>Pass through context data for rnd_func. </td></tr> <tr><td class="paramdir">[in,out]</td><td class="paramname">r</td><td>The random finite field element.</td></tr> </table> </dd> </dl> <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> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <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> </table> </dd> </dl> <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> <dd> <a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c" title="Generates random data. ">BitSupplier</a> </dd></dl> </div> </div> <a id="gabd511d79d9cbd1899e59258f149102c5"></a> <h2 class="memtitle"><span class="permalink"><a href="#gabd511d79d9cbd1899e59258f149102c5">◆ </a></span>FfHash()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfHash </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> </td> <td class="paramname"><em>msg</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>msg_len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> </td> <td class="paramname"><em>hash_alg</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Hashes an arbitrary message to an element in a finite field. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The size of msg in bytes. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The hash algorithm. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The hashed value.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga26069d035d0f6ade33af2b5d5c14949a"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga26069d035d0f6ade33af2b5d5c14949a">◆ </a></span>FfInv()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfInv </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Calculates the multiplicative inverse of a finite field element. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The element. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The inverted element.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="gaed2acb8583e9c9f6b49fdb660c672625"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaed2acb8583e9c9f6b49fdb660c672625">◆ </a></span>FfIsEqual()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfIsEqual </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> * </td> <td class="paramname"><em>is_equal</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Checks if two finite field elements are equal. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>An element to check. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Another element to check. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">is_equal</td><td>The result of the check.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> </div> </div> <a id="ga20d9140e5670d679ef8183d9b5115f53"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga20d9140e5670d679ef8183d9b5115f53">◆ </a></span>FfIsZero()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfIsZero </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> * </td> <td class="paramname"><em>is_zero</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Checks if given finite field element is the additive identity (zero). </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The element. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">is_zero</td><td>The result of the check.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga4613a75bd001a974b3e3e494c3a112a5"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga4613a75bd001a974b3e3e494c3a112a5">◆ </a></span>FfMul()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfMul </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Multiplies two finite field elements. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The first operand to be multplied. </td></tr> <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> <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of multiplying a and b.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga84d21decc1c957bcf6e98e1492eb2ac3"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga84d21decc1c957bcf6e98e1492eb2ac3">◆ </a></span>FfMultiExp()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfMultiExp </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const ** </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const ** </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Multi-exponentiates finite field elements. </p> <p>Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m > 1</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr> <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> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga1ef46fc83f9c11263a2aa1ec906c9144"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga1ef46fc83f9c11263a2aa1ec906c9144">◆ </a></span>FfMultiExpBn()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfMultiExpBn </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const ** </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const ** </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Multi-exponentiates finite field elements. </p> <p>Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m > 1</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr> <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> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="gae7a8c7503b6fc7a41bcaab4d45ca37b2"></a> <h2 class="memtitle"><span class="permalink"><a href="#gae7a8c7503b6fc7a41bcaab4d45ca37b2">◆ </a></span>FfNeg()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfNeg </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Calculates the additive inverse of a finite field element. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The element. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The inverted element.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga39892fe2ab431e166dbbcf57756660f6"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga39892fe2ab431e166dbbcf57756660f6">◆ </a></span>FfSqrt()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfSqrt </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Finds a square root of a finite field element. </p> <p>This function calculates the square root by the method of false position.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr> <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> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">kEpidMathQuadraticNonResidueError</td><td>No square root could be found. </td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga0d0c31a22bbfb665a16b2d25b0cd2634"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga0d0c31a22bbfb665a16b2d25b0cd2634">◆ </a></span>FfSscmMultiExp()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfSscmMultiExp </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const ** </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const ** </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Software side-channel mitigated implementation of FfMultiExp. </p> <p>Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m > 1</p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field in which to perform the operation. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr> <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> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> </div> </div> <a id="ga59d20610f245ff4bc3a17b7bfe289991"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga59d20610f245ff4bc3a17b7bfe289991">◆ </a></span>FfSub()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> FfSub </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Subtracts two finite field elements. </p> <dl class="section note"><dt>Note</dt><dd>Only needed for Intel(R) EPID 1.1 verification.</dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">a</td><td>The first operand to use in subtraction. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">b</td><td>The second operand to use in subtraction. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of subtracting a and b.</td></tr> </table> </dd> </dl> <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> </div> </div> <a id="ga90b2c192708973b54b7a3e82b34536ed"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga90b2c192708973b54b7a3e82b34536ed">◆ </a></span>InitFfElementFromBn()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> InitFfElementFromBn </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> * </td> <td class="paramname"><em>bn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>ff_elem</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Initializes an existing FfElement from a BigNum. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. Must be a Prime Field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">bn</td><td>The value to read. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">ff_elem</td><td>The target FfElement.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gaa3c1f7515dd823ddad8764091ebc665f" title="Serializes a finite field element to a string. ">WriteFfElement</a> </dd></dl> </div> </div> <a id="gacc54f315ede2dbeb8c5990c024a0de6c"></a> <h2 class="memtitle"><span class="permalink"><a href="#gacc54f315ede2dbeb8c5990c024a0de6c">◆ </a></span>NewFfElement()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFfElement </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> ** </td> <td class="paramname"><em>new_ff_elem</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Creates a new finite field element. </p> <p>Allocates memory and creates a new finite field element.</p> <p>Use <a class="el" href="group___finite_field_primitives.html#ga1bad3c6945d1d709fceb07a1dd03000e" title="Frees a previously allocated FfElement. ">DeleteFfElement()</a> to free memory.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">new_ff_elem</td><td>The Newly constructed finite field element.</td></tr> </table> </dd> </dl> <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> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#ga1bad3c6945d1d709fceb07a1dd03000e" title="Frees a previously allocated FfElement. ">DeleteFfElement</a> </dd></dl> </div> </div> <a id="ga7d99fdc5e4573668a5744e49df7ab67c"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga7d99fdc5e4573668a5744e49df7ab67c">◆ </a></span>NewFiniteField()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFiniteField </td> <td>(</td> <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const * </td> <td class="paramname"><em>prime</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> ** </td> <td class="paramname"><em>ff</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Creates new finite field. </p> <p>Allocates memory and creates a new finite field GF(prime).</p> <p>Use <a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField()</a> to free memory.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">prime</td><td>The order of the finite field. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">ff</td><td>The newly constructed finite field.</td></tr> </table> </dd> </dl> <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> <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> </div> </div> <a id="ga83041e3be9984a4bd8f1021934bfa3a2"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga83041e3be9984a4bd8f1021934bfa3a2">◆ </a></span>NewFiniteFieldViaBinomalExtension()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFiniteFieldViaBinomalExtension </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const * </td> <td class="paramname"><em>ground_field</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>ground_element</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>degree</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> ** </td> <td class="paramname"><em>ff</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Creates a new finite field using binomial extension. </p> <p>Allocates memory and creates a finite field using binomial extension.</p> <p>Use <a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField()</a> to free memory.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ground_field</td><td>The ground field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">ground_element</td><td>The low-order term of the extension. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">degree</td><td>The degree of the extension. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">ff</td><td>The newly constructed finite field.</td></tr> </table> </dd> </dl> <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> <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> <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> </div> </div> <a id="gae69af62a03179718cac81b004549c598"></a> <h2 class="memtitle"><span class="permalink"><a href="#gae69af62a03179718cac81b004549c598">◆ </a></span>NewFiniteFieldViaPolynomialExtension()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewFiniteFieldViaPolynomialExtension </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const * </td> <td class="paramname"><em>ground_field</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const * </td> <td class="paramname"><em>irr_polynomial</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>degree</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> ** </td> <td class="paramname"><em>ff</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Creates a new finite field using polynomial extension. </p> <p>Allocates memory and creates a finite field using polynomial extension.</p> <p>Use <a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField()</a> to free memory.</p> <dl class="section note"><dt>Note</dt><dd>Only needed for Intel(R) EPID 1.1 verification.</dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ground_field</td><td>The ground field. </td></tr> <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> <tr><td class="paramdir">[in]</td><td class="paramname">degree</td><td>The degree of the extension. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">ff</td><td>The newly constructed finite field.</td></tr> </table> </dd> </dl> <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> <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> <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> </div> </div> <a id="ga8a143a5a815a62f4947be2de1653c50f"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga8a143a5a815a62f4947be2de1653c50f">◆ </a></span>ReadFfElement()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> ReadFfElement </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> </td> <td class="paramname"><em>ff_elem_str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>strlen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> * </td> <td class="paramname"><em>ff_elem</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Deserializes a FfElement from a string. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">ff_elem_str</td><td>The serialized value. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">strlen</td><td>The size of ff_elem_str in bytes. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">ff_elem</td><td>The target FfElement.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="group___finite_field_primitives.html#gaa3c1f7515dd823ddad8764091ebc665f" title="Serializes a finite field element to a string. ">WriteFfElement</a> </dd></dl> </div> </div> <a id="gaa3c1f7515dd823ddad8764091ebc665f"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaa3c1f7515dd823ddad8764091ebc665f">◆ </a></span>WriteFfElement()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> WriteFfElement </td> <td>(</td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> * </td> <td class="paramname"><em>ff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> <td class="paramname"><em>ff_elem</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___epid_types.html#ga3315fb24f4c5783b6d6eb107933390b0">OctStr</a> </td> <td class="paramname"><em>ff_elem_str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>strlen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Serializes a finite field element to a string. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">ff_elem</td><td>The FfElement to be serialized. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">ff_elem_str</td><td>The target string. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">strlen</td><td>The size of ff_elem_str in bytes.</td></tr> </table> </dd> </dl> <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> <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> <dd> <a class="el" href="struct_fp_elem_str.html" title="a number in [0, p-1] ">FpElemStr</a> </dd> <dd> <a class="el" href="struct_fq_elem_str.html" title="a number in [0, q-1] ">FqElemStr</a> </dd> <dd> <a class="el" href="struct_gt_elem_str.html" title="Serialized GT element. ">GtElemStr</a> </dd></dl> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer"> © 2016-2017 Intel Corporation </li> </ul> </div> </body> </html>