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