• 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: epid/member/tiny/math/efq.h File Reference</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('efq_8h.html','');});
58/* @license-end */
59</script>
60<div id="doc-content">
61<div class="header">
62  <div class="summary">
63<a href="#func-members">Functions</a>  </div>
64  <div class="headertitle">
65<div class="title">efq.h File Reference</div>  </div>
66</div><!--header-->
67<div class="contents">
68
69<p>Definition of EFq math.
70<a href="#details">More...</a></p>
71<div class="textblock"><code>#include &lt;stddef.h&gt;</code><br />
72<code>#include &quot;<a class="el" href="bitsupplier_8h.html">epid/common/bitsupplier.h</a>&quot;</code><br />
73<code>#include &quot;<a class="el" href="types_8h.html">epid/common/types.h</a>&quot;</code><br />
74</div><table class="memberdecls">
75<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
76Functions</h2></td></tr>
77<tr class="memitem:a84e5231cee67eeba5b2a0f99088bc70e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a84e5231cee67eeba5b2a0f99088bc70e">EFqMulSSCM</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *base, <a class="el" href="struct_fp_elem.html">FpElem</a> const *exp)</td></tr>
78<tr class="memdesc:a84e5231cee67eeba5b2a0f99088bc70e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply two points in EFq.  <a href="#a84e5231cee67eeba5b2a0f99088bc70e">More...</a><br /></td></tr>
79<tr class="separator:a84e5231cee67eeba5b2a0f99088bc70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:a8990ca0e19d8ed7b78958963e60948e2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a8990ca0e19d8ed7b78958963e60948e2">EFqAffineExp</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *base, <a class="el" href="struct_fp_elem.html">FpElem</a> const *exp)</td></tr>
81<tr class="memdesc:a8990ca0e19d8ed7b78958963e60948e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exponentiate a point in EFq by an element of Fp.  <a href="#a8990ca0e19d8ed7b78958963e60948e2">More...</a><br /></td></tr>
82<tr class="separator:a8990ca0e19d8ed7b78958963e60948e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
83<tr class="memitem:a2618ae4b4fc8f2838a6550abfb4448ca"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a2618ae4b4fc8f2838a6550abfb4448ca">EFqAffineMultiExp</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *base0, <a class="el" href="struct_fp_elem.html">FpElem</a> const *exp0, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *base1, <a class="el" href="struct_fp_elem.html">FpElem</a> const *exp1)</td></tr>
84<tr class="memdesc:a2618ae4b4fc8f2838a6550abfb4448ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum the results of exponentiating two points in EFq by elements of Fp.  <a href="#a2618ae4b4fc8f2838a6550abfb4448ca">More...</a><br /></td></tr>
85<tr class="separator:a2618ae4b4fc8f2838a6550abfb4448ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:abbcd39b964e4fd685d1dba73ec110c86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#abbcd39b964e4fd685d1dba73ec110c86">EFqMultiExp</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *base0, <a class="el" href="struct_fp_elem.html">FpElem</a> const *exp0, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *base1, <a class="el" href="struct_fp_elem.html">FpElem</a> const *exp1)</td></tr>
87<tr class="memdesc:abbcd39b964e4fd685d1dba73ec110c86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum the results of exponentiating two points in EFq by elements of Fp.  <a href="#abbcd39b964e4fd685d1dba73ec110c86">More...</a><br /></td></tr>
88<tr class="separator:abbcd39b964e4fd685d1dba73ec110c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
89<tr class="memitem:a6cf130d65a5f35237a88046faad43c0a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a6cf130d65a5f35237a88046faad43c0a">EFqAffineAdd</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *left, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *right)</td></tr>
90<tr class="memdesc:a6cf130d65a5f35237a88046faad43c0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add two points in EFq.  <a href="#a6cf130d65a5f35237a88046faad43c0a">More...</a><br /></td></tr>
91<tr class="separator:a6cf130d65a5f35237a88046faad43c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:a975f92abdaf431f2fb152fca84d468b3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a975f92abdaf431f2fb152fca84d468b3">EFqAffineDbl</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *in)</td></tr>
93<tr class="memdesc:a975f92abdaf431f2fb152fca84d468b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Double a point in EFq.  <a href="#a975f92abdaf431f2fb152fca84d468b3">More...</a><br /></td></tr>
94<tr class="separator:a975f92abdaf431f2fb152fca84d468b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
95<tr class="memitem:a23b6331263b002e6e07d2be5216fd6e8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a23b6331263b002e6e07d2be5216fd6e8">EFqDbl</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *in)</td></tr>
96<tr class="memdesc:a23b6331263b002e6e07d2be5216fd6e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Double a point in EFq.  <a href="#a23b6331263b002e6e07d2be5216fd6e8">More...</a><br /></td></tr>
97<tr class="separator:a23b6331263b002e6e07d2be5216fd6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
98<tr class="memitem:abf04f5ec866fc77d0203beb8a8991f25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#abf04f5ec866fc77d0203beb8a8991f25">EFqAdd</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *left, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *right)</td></tr>
99<tr class="memdesc:abf04f5ec866fc77d0203beb8a8991f25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add two points in EFq.  <a href="#abf04f5ec866fc77d0203beb8a8991f25">More...</a><br /></td></tr>
100<tr class="separator:abf04f5ec866fc77d0203beb8a8991f25"><td class="memSeparator" colspan="2">&#160;</td></tr>
101<tr class="memitem:a40588e2618ed9a38043532785a8d5785"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a40588e2618ed9a38043532785a8d5785">EFqRand</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, <a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> rnd_func, void *rnd_param)</td></tr>
102<tr class="memdesc:a40588e2618ed9a38043532785a8d5785"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a random point in EFq.  <a href="#a40588e2618ed9a38043532785a8d5785">More...</a><br /></td></tr>
103<tr class="separator:a40588e2618ed9a38043532785a8d5785"><td class="memSeparator" colspan="2">&#160;</td></tr>
104<tr class="memitem:a7d1841f9e29bc604054536de7a4a861d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a7d1841f9e29bc604054536de7a4a861d">EFqSet</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_fq_elem.html">FqElem</a> const *x, <a class="el" href="struct_fq_elem.html">FqElem</a> const *y)</td></tr>
105<tr class="memdesc:a7d1841f9e29bc604054536de7a4a861d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a point's value.  <a href="#a7d1841f9e29bc604054536de7a4a861d">More...</a><br /></td></tr>
106<tr class="separator:a7d1841f9e29bc604054536de7a4a861d"><td class="memSeparator" colspan="2">&#160;</td></tr>
107<tr class="memitem:ae38257cf97872a4fa855033ad44e2e10"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#ae38257cf97872a4fa855033ad44e2e10">EFqIsInf</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *in)</td></tr>
108<tr class="memdesc:ae38257cf97872a4fa855033ad44e2e10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if a point is infinity.  <a href="#ae38257cf97872a4fa855033ad44e2e10">More...</a><br /></td></tr>
109<tr class="separator:ae38257cf97872a4fa855033ad44e2e10"><td class="memSeparator" colspan="2">&#160;</td></tr>
110<tr class="memitem:a97ce025667b076986a6d92b3d41a7827"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a97ce025667b076986a6d92b3d41a7827">EFqFromAffine</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *in)</td></tr>
111<tr class="memdesc:a97ce025667b076986a6d92b3d41a7827"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a point from Affine to Jacobi representation.  <a href="#a97ce025667b076986a6d92b3d41a7827">More...</a><br /></td></tr>
112<tr class="separator:a97ce025667b076986a6d92b3d41a7827"><td class="memSeparator" colspan="2">&#160;</td></tr>
113<tr class="memitem:aaf3f26e855b85e869cb80fae780a4e6a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#aaf3f26e855b85e869cb80fae780a4e6a">EFqToAffine</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *in)</td></tr>
114<tr class="memdesc:aaf3f26e855b85e869cb80fae780a4e6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a point from Jacobi to Affine representation.  <a href="#aaf3f26e855b85e869cb80fae780a4e6a">More...</a><br /></td></tr>
115<tr class="separator:aaf3f26e855b85e869cb80fae780a4e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:a0f7309ab07d4d3e0556a32f1839ae6fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a0f7309ab07d4d3e0556a32f1839ae6fe">EFqNeg</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *in)</td></tr>
117<tr class="memdesc:a0f7309ab07d4d3e0556a32f1839ae6fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Negate a point on EFq.  <a href="#a0f7309ab07d4d3e0556a32f1839ae6fe">More...</a><br /></td></tr>
118<tr class="separator:a0f7309ab07d4d3e0556a32f1839ae6fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
119<tr class="memitem:a7fbfe9d25cf08f4dcbd950cfb07471ff"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a7fbfe9d25cf08f4dcbd950cfb07471ff">EFqEq</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *left, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *right)</td></tr>
120<tr class="memdesc:a7fbfe9d25cf08f4dcbd950cfb07471ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if two points on EFq are equal.  <a href="#a7fbfe9d25cf08f4dcbd950cfb07471ff">More...</a><br /></td></tr>
121<tr class="separator:a7fbfe9d25cf08f4dcbd950cfb07471ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:abf80ad8b8e3e506f4c46ec57de1c4846"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#abf80ad8b8e3e506f4c46ec57de1c4846">EFqHash</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, unsigned char const *msg, size_t len, <a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> hashalg)</td></tr>
123<tr class="memdesc:abf80ad8b8e3e506f4c46ec57de1c4846"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hashes an arbitrary message to a point on EFq.  <a href="#abf80ad8b8e3e506f4c46ec57de1c4846">More...</a><br /></td></tr>
124<tr class="separator:abf80ad8b8e3e506f4c46ec57de1c4846"><td class="memSeparator" colspan="2">&#160;</td></tr>
125<tr class="memitem:a7a7863639a5b96d44522d579d7d32e40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a7a7863639a5b96d44522d579d7d32e40">EFqCp</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *result, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *in)</td></tr>
126<tr class="memdesc:a7a7863639a5b96d44522d579d7d32e40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a point's value.  <a href="#a7a7863639a5b96d44522d579d7d32e40">More...</a><br /></td></tr>
127<tr class="separator:a7a7863639a5b96d44522d579d7d32e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
128<tr class="memitem:acfc458ea689ea3aa637c9c817dfa44c5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#acfc458ea689ea3aa637c9c817dfa44c5">EFqEqAffine</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *left, <a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *right)</td></tr>
129<tr class="memdesc:acfc458ea689ea3aa637c9c817dfa44c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if two points on EFq are equal.  <a href="#acfc458ea689ea3aa637c9c817dfa44c5">More...</a><br /></td></tr>
130<tr class="separator:acfc458ea689ea3aa637c9c817dfa44c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
131<tr class="memitem:a9b2fcab6bc74601f9c302c5b34400ae4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a9b2fcab6bc74601f9c302c5b34400ae4">EFqCondSet</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *true_val, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *false_val, int truth_val)</td></tr>
132<tr class="memdesc:a9b2fcab6bc74601f9c302c5b34400ae4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conditionally Set a point's value to one of two values.  <a href="#a9b2fcab6bc74601f9c302c5b34400ae4">More...</a><br /></td></tr>
133<tr class="separator:a9b2fcab6bc74601f9c302c5b34400ae4"><td class="memSeparator" colspan="2">&#160;</td></tr>
134<tr class="memitem:a1a31d069739c4da17011280a8ae6354a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a1a31d069739c4da17011280a8ae6354a">EFqJCp</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *in)</td></tr>
135<tr class="memdesc:a1a31d069739c4da17011280a8ae6354a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a point's value.  <a href="#a1a31d069739c4da17011280a8ae6354a">More...</a><br /></td></tr>
136<tr class="separator:a1a31d069739c4da17011280a8ae6354a"><td class="memSeparator" colspan="2">&#160;</td></tr>
137<tr class="memitem:a73fd77b7cc14c0decd95fd294b5b250c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a73fd77b7cc14c0decd95fd294b5b250c">EFqInf</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result)</td></tr>
138<tr class="memdesc:a73fd77b7cc14c0decd95fd294b5b250c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an element's value to infinity.  <a href="#a73fd77b7cc14c0decd95fd294b5b250c">More...</a><br /></td></tr>
139<tr class="separator:a73fd77b7cc14c0decd95fd294b5b250c"><td class="memSeparator" colspan="2">&#160;</td></tr>
140<tr class="memitem:a81470fed188d5043f89b6b8ab6031a42"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a81470fed188d5043f89b6b8ab6031a42">EFqOnCurve</a> (<a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *in)</td></tr>
141<tr class="memdesc:a81470fed188d5043f89b6b8ab6031a42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if a point is on EFq.  <a href="#a81470fed188d5043f89b6b8ab6031a42">More...</a><br /></td></tr>
142<tr class="separator:a81470fed188d5043f89b6b8ab6031a42"><td class="memSeparator" colspan="2">&#160;</td></tr>
143<tr class="memitem:ada751265a36ee3236fce90105a62909e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#ada751265a36ee3236fce90105a62909e">EFqJOnCurve</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *in)</td></tr>
144<tr class="memdesc:ada751265a36ee3236fce90105a62909e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if a point is on EFq.  <a href="#ada751265a36ee3236fce90105a62909e">More...</a><br /></td></tr>
145<tr class="separator:ada751265a36ee3236fce90105a62909e"><td class="memSeparator" colspan="2">&#160;</td></tr>
146<tr class="memitem:a15bda5d411f7c6d602994e6444034414"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="efq_8h.html#a15bda5d411f7c6d602994e6444034414">EFqJRand</a> (<a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *result, <a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> rnd_func, void *rnd_param)</td></tr>
147<tr class="memdesc:a15bda5d411f7c6d602994e6444034414"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a random point in EFq.  <a href="#a15bda5d411f7c6d602994e6444034414">More...</a><br /></td></tr>
148<tr class="separator:a15bda5d411f7c6d602994e6444034414"><td class="memSeparator" colspan="2">&#160;</td></tr>
149</table>
150<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
151<div class="textblock"><p>Definition of EFq math. </p>
152</div><h2 class="groupheader">Function Documentation</h2>
153<a id="abf04f5ec866fc77d0203beb8a8991f25"></a>
154<h2 class="memtitle"><span class="permalink"><a href="#abf04f5ec866fc77d0203beb8a8991f25">&#9670;&nbsp;</a></span>EFqAdd()</h2>
155
156<div class="memitem">
157<div class="memproto">
158      <table class="memname">
159        <tr>
160          <td class="memname">void EFqAdd </td>
161          <td>(</td>
162          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
163          <td class="paramname"><em>result</em>, </td>
164        </tr>
165        <tr>
166          <td class="paramkey"></td>
167          <td></td>
168          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
169          <td class="paramname"><em>left</em>, </td>
170        </tr>
171        <tr>
172          <td class="paramkey"></td>
173          <td></td>
174          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
175          <td class="paramname"><em>right</em>&#160;</td>
176        </tr>
177        <tr>
178          <td></td>
179          <td>)</td>
180          <td></td><td></td>
181        </tr>
182      </table>
183</div><div class="memdoc">
184
185<p>Add two points in EFq. </p>
186<dl class="params"><dt>Parameters</dt><dd>
187  <table class="params">
188    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>of adding left and right. </td></tr>
189    <tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be added. </td></tr>
190    <tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be added. </td></tr>
191  </table>
192  </dd>
193</dl>
194
195</div>
196</div>
197<a id="a6cf130d65a5f35237a88046faad43c0a"></a>
198<h2 class="memtitle"><span class="permalink"><a href="#a6cf130d65a5f35237a88046faad43c0a">&#9670;&nbsp;</a></span>EFqAffineAdd()</h2>
199
200<div class="memitem">
201<div class="memproto">
202      <table class="memname">
203        <tr>
204          <td class="memname">int EFqAffineAdd </td>
205          <td>(</td>
206          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
207          <td class="paramname"><em>result</em>, </td>
208        </tr>
209        <tr>
210          <td class="paramkey"></td>
211          <td></td>
212          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
213          <td class="paramname"><em>left</em>, </td>
214        </tr>
215        <tr>
216          <td class="paramkey"></td>
217          <td></td>
218          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
219          <td class="paramname"><em>right</em>&#160;</td>
220        </tr>
221        <tr>
222          <td></td>
223          <td>)</td>
224          <td></td><td></td>
225        </tr>
226      </table>
227</div><div class="memdoc">
228
229<p>Add two points in EFq. </p>
230<dl class="params"><dt>Parameters</dt><dd>
231  <table class="params">
232    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>of adding left and right. </td></tr>
233    <tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be added. </td></tr>
234    <tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be added. </td></tr>
235  </table>
236  </dd>
237</dl>
238<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise. </dd></dl>
239
240</div>
241</div>
242<a id="a975f92abdaf431f2fb152fca84d468b3"></a>
243<h2 class="memtitle"><span class="permalink"><a href="#a975f92abdaf431f2fb152fca84d468b3">&#9670;&nbsp;</a></span>EFqAffineDbl()</h2>
244
245<div class="memitem">
246<div class="memproto">
247      <table class="memname">
248        <tr>
249          <td class="memname">int EFqAffineDbl </td>
250          <td>(</td>
251          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
252          <td class="paramname"><em>result</em>, </td>
253        </tr>
254        <tr>
255          <td class="paramkey"></td>
256          <td></td>
257          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
258          <td class="paramname"><em>in</em>&#160;</td>
259        </tr>
260        <tr>
261          <td></td>
262          <td>)</td>
263          <td></td><td></td>
264        </tr>
265      </table>
266</div><div class="memdoc">
267
268<p>Double a point in EFq. </p>
269<dl class="params"><dt>Parameters</dt><dd>
270  <table class="params">
271    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
272    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the value to double. </td></tr>
273  </table>
274  </dd>
275</dl>
276<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise. </dd></dl>
277
278</div>
279</div>
280<a id="a8990ca0e19d8ed7b78958963e60948e2"></a>
281<h2 class="memtitle"><span class="permalink"><a href="#a8990ca0e19d8ed7b78958963e60948e2">&#9670;&nbsp;</a></span>EFqAffineExp()</h2>
282
283<div class="memitem">
284<div class="memproto">
285      <table class="memname">
286        <tr>
287          <td class="memname">int EFqAffineExp </td>
288          <td>(</td>
289          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
290          <td class="paramname"><em>result</em>, </td>
291        </tr>
292        <tr>
293          <td class="paramkey"></td>
294          <td></td>
295          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
296          <td class="paramname"><em>base</em>, </td>
297        </tr>
298        <tr>
299          <td class="paramkey"></td>
300          <td></td>
301          <td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const *&#160;</td>
302          <td class="paramname"><em>exp</em>&#160;</td>
303        </tr>
304        <tr>
305          <td></td>
306          <td>)</td>
307          <td></td><td></td>
308        </tr>
309      </table>
310</div><div class="memdoc">
311
312<p>Exponentiate a point in EFq by an element of Fp. </p>
313<dl class="params"><dt>Parameters</dt><dd>
314  <table class="params">
315    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
316    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>the base. </td></tr>
317    <tr><td class="paramdir">[in]</td><td class="paramname">exp</td><td>the exponent. </td></tr>
318  </table>
319  </dd>
320</dl>
321<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise.</dd>
322<dd>
3231 on success, 0 on failure </dd></dl>
324
325</div>
326</div>
327<a id="a2618ae4b4fc8f2838a6550abfb4448ca"></a>
328<h2 class="memtitle"><span class="permalink"><a href="#a2618ae4b4fc8f2838a6550abfb4448ca">&#9670;&nbsp;</a></span>EFqAffineMultiExp()</h2>
329
330<div class="memitem">
331<div class="memproto">
332      <table class="memname">
333        <tr>
334          <td class="memname">int EFqAffineMultiExp </td>
335          <td>(</td>
336          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
337          <td class="paramname"><em>result</em>, </td>
338        </tr>
339        <tr>
340          <td class="paramkey"></td>
341          <td></td>
342          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
343          <td class="paramname"><em>base0</em>, </td>
344        </tr>
345        <tr>
346          <td class="paramkey"></td>
347          <td></td>
348          <td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const *&#160;</td>
349          <td class="paramname"><em>exp0</em>, </td>
350        </tr>
351        <tr>
352          <td class="paramkey"></td>
353          <td></td>
354          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
355          <td class="paramname"><em>base1</em>, </td>
356        </tr>
357        <tr>
358          <td class="paramkey"></td>
359          <td></td>
360          <td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const *&#160;</td>
361          <td class="paramname"><em>exp1</em>&#160;</td>
362        </tr>
363        <tr>
364          <td></td>
365          <td>)</td>
366          <td></td><td></td>
367        </tr>
368      </table>
369</div><div class="memdoc">
370
371<p>Sum the results of exponentiating two points in EFq by elements of Fp. </p>
372<dl class="params"><dt>Parameters</dt><dd>
373  <table class="params">
374    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
375    <tr><td class="paramdir">[in]</td><td class="paramname">base0</td><td>the first base. </td></tr>
376    <tr><td class="paramdir">[in]</td><td class="paramname">exp0</td><td>the first exponent. </td></tr>
377    <tr><td class="paramdir">[in]</td><td class="paramname">base1</td><td>the second base. </td></tr>
378    <tr><td class="paramdir">[in]</td><td class="paramname">exp1</td><td>the second exponent. </td></tr>
379  </table>
380  </dd>
381</dl>
382<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise. </dd></dl>
383
384</div>
385</div>
386<a id="a9b2fcab6bc74601f9c302c5b34400ae4"></a>
387<h2 class="memtitle"><span class="permalink"><a href="#a9b2fcab6bc74601f9c302c5b34400ae4">&#9670;&nbsp;</a></span>EFqCondSet()</h2>
388
389<div class="memitem">
390<div class="memproto">
391      <table class="memname">
392        <tr>
393          <td class="memname">void EFqCondSet </td>
394          <td>(</td>
395          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
396          <td class="paramname"><em>result</em>, </td>
397        </tr>
398        <tr>
399          <td class="paramkey"></td>
400          <td></td>
401          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
402          <td class="paramname"><em>true_val</em>, </td>
403        </tr>
404        <tr>
405          <td class="paramkey"></td>
406          <td></td>
407          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
408          <td class="paramname"><em>false_val</em>, </td>
409        </tr>
410        <tr>
411          <td class="paramkey"></td>
412          <td></td>
413          <td class="paramtype">int&#160;</td>
414          <td class="paramname"><em>truth_val</em>&#160;</td>
415        </tr>
416        <tr>
417          <td></td>
418          <td>)</td>
419          <td></td><td></td>
420        </tr>
421      </table>
422</div><div class="memdoc">
423
424<p>Conditionally Set a point's value to one of two values. </p>
425<dl class="params"><dt>Parameters</dt><dd>
426  <table class="params">
427    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
428    <tr><td class="paramdir">[in]</td><td class="paramname">true_val</td><td>value to set if condition is true. </td></tr>
429    <tr><td class="paramdir">[in]</td><td class="paramname">false_val</td><td>value to set if condition is false. </td></tr>
430    <tr><td class="paramdir">[in]</td><td class="paramname">truth_val</td><td>value of condition. </td></tr>
431  </table>
432  </dd>
433</dl>
434
435</div>
436</div>
437<a id="a7a7863639a5b96d44522d579d7d32e40"></a>
438<h2 class="memtitle"><span class="permalink"><a href="#a7a7863639a5b96d44522d579d7d32e40">&#9670;&nbsp;</a></span>EFqCp()</h2>
439
440<div class="memitem">
441<div class="memproto">
442      <table class="memname">
443        <tr>
444          <td class="memname">void EFqCp </td>
445          <td>(</td>
446          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
447          <td class="paramname"><em>result</em>, </td>
448        </tr>
449        <tr>
450          <td class="paramkey"></td>
451          <td></td>
452          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
453          <td class="paramname"><em>in</em>&#160;</td>
454        </tr>
455        <tr>
456          <td></td>
457          <td>)</td>
458          <td></td><td></td>
459        </tr>
460      </table>
461</div><div class="memdoc">
462
463<p>Copy a point's value. </p>
464<dl class="params"><dt>Parameters</dt><dd>
465  <table class="params">
466    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>copy target. </td></tr>
467    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>copy source. </td></tr>
468  </table>
469  </dd>
470</dl>
471
472</div>
473</div>
474<a id="a23b6331263b002e6e07d2be5216fd6e8"></a>
475<h2 class="memtitle"><span class="permalink"><a href="#a23b6331263b002e6e07d2be5216fd6e8">&#9670;&nbsp;</a></span>EFqDbl()</h2>
476
477<div class="memitem">
478<div class="memproto">
479      <table class="memname">
480        <tr>
481          <td class="memname">void EFqDbl </td>
482          <td>(</td>
483          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
484          <td class="paramname"><em>result</em>, </td>
485        </tr>
486        <tr>
487          <td class="paramkey"></td>
488          <td></td>
489          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
490          <td class="paramname"><em>in</em>&#160;</td>
491        </tr>
492        <tr>
493          <td></td>
494          <td>)</td>
495          <td></td><td></td>
496        </tr>
497      </table>
498</div><div class="memdoc">
499
500<p>Double a point in EFq. </p>
501<dl class="params"><dt>Parameters</dt><dd>
502  <table class="params">
503    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
504    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the value to double. </td></tr>
505  </table>
506  </dd>
507</dl>
508
509</div>
510</div>
511<a id="a7fbfe9d25cf08f4dcbd950cfb07471ff"></a>
512<h2 class="memtitle"><span class="permalink"><a href="#a7fbfe9d25cf08f4dcbd950cfb07471ff">&#9670;&nbsp;</a></span>EFqEq()</h2>
513
514<div class="memitem">
515<div class="memproto">
516      <table class="memname">
517        <tr>
518          <td class="memname">int EFqEq </td>
519          <td>(</td>
520          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
521          <td class="paramname"><em>left</em>, </td>
522        </tr>
523        <tr>
524          <td class="paramkey"></td>
525          <td></td>
526          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
527          <td class="paramname"><em>right</em>&#160;</td>
528        </tr>
529        <tr>
530          <td></td>
531          <td>)</td>
532          <td></td><td></td>
533        </tr>
534      </table>
535</div><div class="memdoc">
536
537<p>Test if two points on EFq are equal. </p>
538<dl class="params"><dt>Parameters</dt><dd>
539  <table class="params">
540    <tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be tested. </td></tr>
541    <tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be tested. </td></tr>
542  </table>
543  </dd>
544</dl>
545<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if indeed the values are equal. Zero (i.e., false) otherwise. </dd></dl>
546
547</div>
548</div>
549<a id="acfc458ea689ea3aa637c9c817dfa44c5"></a>
550<h2 class="memtitle"><span class="permalink"><a href="#acfc458ea689ea3aa637c9c817dfa44c5">&#9670;&nbsp;</a></span>EFqEqAffine()</h2>
551
552<div class="memitem">
553<div class="memproto">
554      <table class="memname">
555        <tr>
556          <td class="memname">int EFqEqAffine </td>
557          <td>(</td>
558          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
559          <td class="paramname"><em>left</em>, </td>
560        </tr>
561        <tr>
562          <td class="paramkey"></td>
563          <td></td>
564          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
565          <td class="paramname"><em>right</em>&#160;</td>
566        </tr>
567        <tr>
568          <td></td>
569          <td>)</td>
570          <td></td><td></td>
571        </tr>
572      </table>
573</div><div class="memdoc">
574
575<p>Test if two points on EFq are equal. </p>
576<dl class="params"><dt>Parameters</dt><dd>
577  <table class="params">
578    <tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be tested. </td></tr>
579    <tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be tested. </td></tr>
580  </table>
581  </dd>
582</dl>
583<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if indeed the values are equal. Zero (i.e., false) otherwise. </dd></dl>
584
585</div>
586</div>
587<a id="a97ce025667b076986a6d92b3d41a7827"></a>
588<h2 class="memtitle"><span class="permalink"><a href="#a97ce025667b076986a6d92b3d41a7827">&#9670;&nbsp;</a></span>EFqFromAffine()</h2>
589
590<div class="memitem">
591<div class="memproto">
592      <table class="memname">
593        <tr>
594          <td class="memname">void EFqFromAffine </td>
595          <td>(</td>
596          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
597          <td class="paramname"><em>result</em>, </td>
598        </tr>
599        <tr>
600          <td class="paramkey"></td>
601          <td></td>
602          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
603          <td class="paramname"><em>in</em>&#160;</td>
604        </tr>
605        <tr>
606          <td></td>
607          <td>)</td>
608          <td></td><td></td>
609        </tr>
610      </table>
611</div><div class="memdoc">
612
613<p>Convert a point from Affine to Jacobi representation. </p>
614<dl class="params"><dt>Parameters</dt><dd>
615  <table class="params">
616    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
617    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>value to set. </td></tr>
618  </table>
619  </dd>
620</dl>
621
622</div>
623</div>
624<a id="abf80ad8b8e3e506f4c46ec57de1c4846"></a>
625<h2 class="memtitle"><span class="permalink"><a href="#abf80ad8b8e3e506f4c46ec57de1c4846">&#9670;&nbsp;</a></span>EFqHash()</h2>
626
627<div class="memitem">
628<div class="memproto">
629      <table class="memname">
630        <tr>
631          <td class="memname">int EFqHash </td>
632          <td>(</td>
633          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
634          <td class="paramname"><em>result</em>, </td>
635        </tr>
636        <tr>
637          <td class="paramkey"></td>
638          <td></td>
639          <td class="paramtype">unsigned char const *&#160;</td>
640          <td class="paramname"><em>msg</em>, </td>
641        </tr>
642        <tr>
643          <td class="paramkey"></td>
644          <td></td>
645          <td class="paramtype">size_t&#160;</td>
646          <td class="paramname"><em>len</em>, </td>
647        </tr>
648        <tr>
649          <td class="paramkey"></td>
650          <td></td>
651          <td class="paramtype"><a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a>&#160;</td>
652          <td class="paramname"><em>hashalg</em>&#160;</td>
653        </tr>
654        <tr>
655          <td></td>
656          <td>)</td>
657          <td></td><td></td>
658        </tr>
659      </table>
660</div><div class="memdoc">
661
662<p>Hashes an arbitrary message to a point on EFq. </p>
663<dl class="params"><dt>Parameters</dt><dd>
664  <table class="params">
665    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
666    <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>buffer to reinterpret. </td></tr>
667    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>length of msg in bytes. </td></tr>
668    <tr><td class="paramdir">[in]</td><td class="paramname">hashalg</td><td>hash algorithm to use. </td></tr>
669  </table>
670  </dd>
671</dl>
672<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise. </dd></dl>
673
674</div>
675</div>
676<a id="a73fd77b7cc14c0decd95fd294b5b250c"></a>
677<h2 class="memtitle"><span class="permalink"><a href="#a73fd77b7cc14c0decd95fd294b5b250c">&#9670;&nbsp;</a></span>EFqInf()</h2>
678
679<div class="memitem">
680<div class="memproto">
681      <table class="memname">
682        <tr>
683          <td class="memname">void EFqInf </td>
684          <td>(</td>
685          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
686          <td class="paramname"><em>result</em></td><td>)</td>
687          <td></td>
688        </tr>
689      </table>
690</div><div class="memdoc">
691
692<p>Set an element's value to infinity. </p>
693<dl class="params"><dt>Parameters</dt><dd>
694  <table class="params">
695    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>element to set. </td></tr>
696  </table>
697  </dd>
698</dl>
699
700</div>
701</div>
702<a id="ae38257cf97872a4fa855033ad44e2e10"></a>
703<h2 class="memtitle"><span class="permalink"><a href="#ae38257cf97872a4fa855033ad44e2e10">&#9670;&nbsp;</a></span>EFqIsInf()</h2>
704
705<div class="memitem">
706<div class="memproto">
707      <table class="memname">
708        <tr>
709          <td class="memname">int EFqIsInf </td>
710          <td>(</td>
711          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
712          <td class="paramname"><em>in</em></td><td>)</td>
713          <td></td>
714        </tr>
715      </table>
716</div><div class="memdoc">
717
718<p>Test if a point is infinity. </p>
719<dl class="params"><dt>Parameters</dt><dd>
720  <table class="params">
721    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the point to test. </td></tr>
722  </table>
723  </dd>
724</dl>
725<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) indeed the value is infinity. Zero (i.e., false) otherwise. </dd></dl>
726
727</div>
728</div>
729<a id="a1a31d069739c4da17011280a8ae6354a"></a>
730<h2 class="memtitle"><span class="permalink"><a href="#a1a31d069739c4da17011280a8ae6354a">&#9670;&nbsp;</a></span>EFqJCp()</h2>
731
732<div class="memitem">
733<div class="memproto">
734      <table class="memname">
735        <tr>
736          <td class="memname">void EFqJCp </td>
737          <td>(</td>
738          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
739          <td class="paramname"><em>result</em>, </td>
740        </tr>
741        <tr>
742          <td class="paramkey"></td>
743          <td></td>
744          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
745          <td class="paramname"><em>in</em>&#160;</td>
746        </tr>
747        <tr>
748          <td></td>
749          <td>)</td>
750          <td></td><td></td>
751        </tr>
752      </table>
753</div><div class="memdoc">
754
755<p>Copy a point's value. </p>
756<dl class="params"><dt>Parameters</dt><dd>
757  <table class="params">
758    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>copy target. </td></tr>
759    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>copy source. </td></tr>
760  </table>
761  </dd>
762</dl>
763
764</div>
765</div>
766<a id="ada751265a36ee3236fce90105a62909e"></a>
767<h2 class="memtitle"><span class="permalink"><a href="#ada751265a36ee3236fce90105a62909e">&#9670;&nbsp;</a></span>EFqJOnCurve()</h2>
768
769<div class="memitem">
770<div class="memproto">
771      <table class="memname">
772        <tr>
773          <td class="memname">int EFqJOnCurve </td>
774          <td>(</td>
775          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
776          <td class="paramname"><em>in</em></td><td>)</td>
777          <td></td>
778        </tr>
779      </table>
780</div><div class="memdoc">
781
782<p>Test if a point is on EFq. </p>
783<dl class="params"><dt>Parameters</dt><dd>
784  <table class="params">
785    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the point to test. </td></tr>
786  </table>
787  </dd>
788</dl>
789<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) indeed the point is on the curve. Zero (i.e., false) otherwise. </dd></dl>
790
791</div>
792</div>
793<a id="a15bda5d411f7c6d602994e6444034414"></a>
794<h2 class="memtitle"><span class="permalink"><a href="#a15bda5d411f7c6d602994e6444034414">&#9670;&nbsp;</a></span>EFqJRand()</h2>
795
796<div class="memitem">
797<div class="memproto">
798      <table class="memname">
799        <tr>
800          <td class="memname">int EFqJRand </td>
801          <td>(</td>
802          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
803          <td class="paramname"><em>result</em>, </td>
804        </tr>
805        <tr>
806          <td class="paramkey"></td>
807          <td></td>
808          <td class="paramtype"><a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a>&#160;</td>
809          <td class="paramname"><em>rnd_func</em>, </td>
810        </tr>
811        <tr>
812          <td class="paramkey"></td>
813          <td></td>
814          <td class="paramtype">void *&#160;</td>
815          <td class="paramname"><em>rnd_param</em>&#160;</td>
816        </tr>
817        <tr>
818          <td></td>
819          <td>)</td>
820          <td></td><td></td>
821        </tr>
822      </table>
823</div><div class="memdoc">
824
825<p>Generate a random point in EFq. </p>
826<dl class="params"><dt>Parameters</dt><dd>
827  <table class="params">
828    <tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>the random value. </td></tr>
829    <tr><td class="paramdir">[in]</td><td class="paramname">rnd_func</td><td>Random number generator. </td></tr>
830    <tr><td class="paramdir">[in]</td><td class="paramname">rnd_param</td><td>Pass through context data for rnd_func. </td></tr>
831  </table>
832  </dd>
833</dl>
834<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise. </dd></dl>
835
836</div>
837</div>
838<a id="a84e5231cee67eeba5b2a0f99088bc70e"></a>
839<h2 class="memtitle"><span class="permalink"><a href="#a84e5231cee67eeba5b2a0f99088bc70e">&#9670;&nbsp;</a></span>EFqMulSSCM()</h2>
840
841<div class="memitem">
842<div class="memproto">
843      <table class="memname">
844        <tr>
845          <td class="memname">void EFqMulSSCM </td>
846          <td>(</td>
847          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
848          <td class="paramname"><em>result</em>, </td>
849        </tr>
850        <tr>
851          <td class="paramkey"></td>
852          <td></td>
853          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
854          <td class="paramname"><em>base</em>, </td>
855        </tr>
856        <tr>
857          <td class="paramkey"></td>
858          <td></td>
859          <td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const *&#160;</td>
860          <td class="paramname"><em>exp</em>&#160;</td>
861        </tr>
862        <tr>
863          <td></td>
864          <td>)</td>
865          <td></td><td></td>
866        </tr>
867      </table>
868</div><div class="memdoc">
869
870<p>Multiply two points in EFq. </p>
871<p>This function is mitigated against software side-channel attacks.</p>
872<dl class="params"><dt>Parameters</dt><dd>
873  <table class="params">
874    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>of multiplying left and right. </td></tr>
875    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The first operand to be multiplied. </td></tr>
876    <tr><td class="paramdir">[in]</td><td class="paramname">exp</td><td>The second operand to be multiplied. </td></tr>
877  </table>
878  </dd>
879</dl>
880
881</div>
882</div>
883<a id="abbcd39b964e4fd685d1dba73ec110c86"></a>
884<h2 class="memtitle"><span class="permalink"><a href="#abbcd39b964e4fd685d1dba73ec110c86">&#9670;&nbsp;</a></span>EFqMultiExp()</h2>
885
886<div class="memitem">
887<div class="memproto">
888      <table class="memname">
889        <tr>
890          <td class="memname">void EFqMultiExp </td>
891          <td>(</td>
892          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
893          <td class="paramname"><em>result</em>, </td>
894        </tr>
895        <tr>
896          <td class="paramkey"></td>
897          <td></td>
898          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
899          <td class="paramname"><em>base0</em>, </td>
900        </tr>
901        <tr>
902          <td class="paramkey"></td>
903          <td></td>
904          <td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const *&#160;</td>
905          <td class="paramname"><em>exp0</em>, </td>
906        </tr>
907        <tr>
908          <td class="paramkey"></td>
909          <td></td>
910          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
911          <td class="paramname"><em>base1</em>, </td>
912        </tr>
913        <tr>
914          <td class="paramkey"></td>
915          <td></td>
916          <td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const *&#160;</td>
917          <td class="paramname"><em>exp1</em>&#160;</td>
918        </tr>
919        <tr>
920          <td></td>
921          <td>)</td>
922          <td></td><td></td>
923        </tr>
924      </table>
925</div><div class="memdoc">
926
927<p>Sum the results of exponentiating two points in EFq by elements of Fp. </p>
928<dl class="params"><dt>Parameters</dt><dd>
929  <table class="params">
930    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
931    <tr><td class="paramdir">[in]</td><td class="paramname">base0</td><td>the first base. </td></tr>
932    <tr><td class="paramdir">[in]</td><td class="paramname">exp0</td><td>the first exponent. </td></tr>
933    <tr><td class="paramdir">[in]</td><td class="paramname">base1</td><td>the second base. </td></tr>
934    <tr><td class="paramdir">[in]</td><td class="paramname">exp1</td><td>the second exponent. </td></tr>
935  </table>
936  </dd>
937</dl>
938<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 on failure </dd></dl>
939
940</div>
941</div>
942<a id="a0f7309ab07d4d3e0556a32f1839ae6fe"></a>
943<h2 class="memtitle"><span class="permalink"><a href="#a0f7309ab07d4d3e0556a32f1839ae6fe">&#9670;&nbsp;</a></span>EFqNeg()</h2>
944
945<div class="memitem">
946<div class="memproto">
947      <table class="memname">
948        <tr>
949          <td class="memname">void EFqNeg </td>
950          <td>(</td>
951          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
952          <td class="paramname"><em>result</em>, </td>
953        </tr>
954        <tr>
955          <td class="paramkey"></td>
956          <td></td>
957          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
958          <td class="paramname"><em>in</em>&#160;</td>
959        </tr>
960        <tr>
961          <td></td>
962          <td>)</td>
963          <td></td><td></td>
964        </tr>
965      </table>
966</div><div class="memdoc">
967
968<p>Negate a point on EFq. </p>
969<dl class="params"><dt>Parameters</dt><dd>
970  <table class="params">
971    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>the negative of the element. </td></tr>
972    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the element to negate. </td></tr>
973  </table>
974  </dd>
975</dl>
976
977</div>
978</div>
979<a id="a81470fed188d5043f89b6b8ab6031a42"></a>
980<h2 class="memtitle"><span class="permalink"><a href="#a81470fed188d5043f89b6b8ab6031a42">&#9670;&nbsp;</a></span>EFqOnCurve()</h2>
981
982<div class="memitem">
983<div class="memproto">
984      <table class="memname">
985        <tr>
986          <td class="memname">int EFqOnCurve </td>
987          <td>(</td>
988          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const *&#160;</td>
989          <td class="paramname"><em>in</em></td><td>)</td>
990          <td></td>
991        </tr>
992      </table>
993</div><div class="memdoc">
994
995<p>Test if a point is on EFq. </p>
996<dl class="params"><dt>Parameters</dt><dd>
997  <table class="params">
998    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the point to test. </td></tr>
999  </table>
1000  </dd>
1001</dl>
1002<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) indeed the point is on the curve. Zero (i.e., false) otherwise. </dd></dl>
1003
1004</div>
1005</div>
1006<a id="a40588e2618ed9a38043532785a8d5785"></a>
1007<h2 class="memtitle"><span class="permalink"><a href="#a40588e2618ed9a38043532785a8d5785">&#9670;&nbsp;</a></span>EFqRand()</h2>
1008
1009<div class="memitem">
1010<div class="memproto">
1011      <table class="memname">
1012        <tr>
1013          <td class="memname">int EFqRand </td>
1014          <td>(</td>
1015          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
1016          <td class="paramname"><em>result</em>, </td>
1017        </tr>
1018        <tr>
1019          <td class="paramkey"></td>
1020          <td></td>
1021          <td class="paramtype"><a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a>&#160;</td>
1022          <td class="paramname"><em>rnd_func</em>, </td>
1023        </tr>
1024        <tr>
1025          <td class="paramkey"></td>
1026          <td></td>
1027          <td class="paramtype">void *&#160;</td>
1028          <td class="paramname"><em>rnd_param</em>&#160;</td>
1029        </tr>
1030        <tr>
1031          <td></td>
1032          <td>)</td>
1033          <td></td><td></td>
1034        </tr>
1035      </table>
1036</div><div class="memdoc">
1037
1038<p>Generate a random point in EFq. </p>
1039<dl class="params"><dt>Parameters</dt><dd>
1040  <table class="params">
1041    <tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>the random value. </td></tr>
1042    <tr><td class="paramdir">[in]</td><td class="paramname">rnd_func</td><td>Random number generator. </td></tr>
1043    <tr><td class="paramdir">[in]</td><td class="paramname">rnd_param</td><td>Pass through context data for rnd_func. </td></tr>
1044  </table>
1045  </dd>
1046</dl>
1047<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise. </dd></dl>
1048
1049</div>
1050</div>
1051<a id="a7d1841f9e29bc604054536de7a4a861d"></a>
1052<h2 class="memtitle"><span class="permalink"><a href="#a7d1841f9e29bc604054536de7a4a861d">&#9670;&nbsp;</a></span>EFqSet()</h2>
1053
1054<div class="memitem">
1055<div class="memproto">
1056      <table class="memname">
1057        <tr>
1058          <td class="memname">void EFqSet </td>
1059          <td>(</td>
1060          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> *&#160;</td>
1061          <td class="paramname"><em>result</em>, </td>
1062        </tr>
1063        <tr>
1064          <td class="paramkey"></td>
1065          <td></td>
1066          <td class="paramtype"><a class="el" href="struct_fq_elem.html">FqElem</a> const *&#160;</td>
1067          <td class="paramname"><em>x</em>, </td>
1068        </tr>
1069        <tr>
1070          <td class="paramkey"></td>
1071          <td></td>
1072          <td class="paramtype"><a class="el" href="struct_fq_elem.html">FqElem</a> const *&#160;</td>
1073          <td class="paramname"><em>y</em>&#160;</td>
1074        </tr>
1075        <tr>
1076          <td></td>
1077          <td>)</td>
1078          <td></td><td></td>
1079        </tr>
1080      </table>
1081</div><div class="memdoc">
1082
1083<p>Set a point's value. </p>
1084<dl class="params"><dt>Parameters</dt><dd>
1085  <table class="params">
1086    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
1087    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>value to set. </td></tr>
1088    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>value to set. </td></tr>
1089  </table>
1090  </dd>
1091</dl>
1092
1093</div>
1094</div>
1095<a id="aaf3f26e855b85e869cb80fae780a4e6a"></a>
1096<h2 class="memtitle"><span class="permalink"><a href="#aaf3f26e855b85e869cb80fae780a4e6a">&#9670;&nbsp;</a></span>EFqToAffine()</h2>
1097
1098<div class="memitem">
1099<div class="memproto">
1100      <table class="memname">
1101        <tr>
1102          <td class="memname">int EFqToAffine </td>
1103          <td>(</td>
1104          <td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> *&#160;</td>
1105          <td class="paramname"><em>result</em>, </td>
1106        </tr>
1107        <tr>
1108          <td class="paramkey"></td>
1109          <td></td>
1110          <td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const *&#160;</td>
1111          <td class="paramname"><em>in</em>&#160;</td>
1112        </tr>
1113        <tr>
1114          <td></td>
1115          <td>)</td>
1116          <td></td><td></td>
1117        </tr>
1118      </table>
1119</div><div class="memdoc">
1120
1121<p>Convert a point from Jacobi to Affine representation. </p>
1122<dl class="params"><dt>Parameters</dt><dd>
1123  <table class="params">
1124    <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
1125    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>value to set. </td></tr>
1126  </table>
1127  </dd>
1128</dl>
1129<dl class="section return"><dt>Returns</dt><dd>A value different from zero (i.e., true) if on success. Zero (i.e., false) otherwise. </dd></dl>
1130
1131</div>
1132</div>
1133</div><!-- contents -->
1134</div><!-- doc-content -->
1135<!-- HTML footer for doxygen 1.8.10-->
1136<!-- start footer part -->
1137<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1138  <ul>
1139    <li class="navelem"><a class="el" href="dir_12b90d9c027aaf878a834df729679a56.html">epid</a></li><li class="navelem"><a class="el" href="dir_512d3e62841a8535b716ec4cf8b9e950.html">member</a></li><li class="navelem"><a class="el" href="dir_ea12d375fc1eb79df248c0adf953af4f.html">tiny</a></li><li class="navelem"><a class="el" href="dir_5f2fc2cf41db41de2b55e03ffa7a1d16.html">math</a></li><li class="navelem"><a class="el" href="efq_8h.html">efq.h</a></li>
1140    <li class="footer">
1141      &copy; 2016-2017 Intel Corporation
1142    </li>
1143  </ul>
1144</div>
1145</body>
1146</html>
1147