<!-- HTML header for doxygen 1.8.10-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<title>Intel® Enhanced Privacy ID SDK: epid/member/tiny/math/efq.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="epidstyle.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname"><a
onclick="storeLink('index.html')"
id="projectlink"
class="index.html"
href="index.html">Intel® Enhanced Privacy ID SDK</a>
 <span id="projectnumber">6.0.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('efq_8h.html','');});
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">efq.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Definition of EFq math.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include <stddef.h></code><br />
<code>#include "<a class="el" href="bitsupplier_8h.html">epid/common/bitsupplier.h</a>"</code><br />
<code>#include "<a class="el" href="types_8h.html">epid/common/types.h</a>"</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a84e5231cee67eeba5b2a0f99088bc70e"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a84e5231cee67eeba5b2a0f99088bc70e"><td class="mdescLeft"> </td><td class="mdescRight">Multiply two points in EFq. <a href="#a84e5231cee67eeba5b2a0f99088bc70e">More...</a><br /></td></tr>
<tr class="separator:a84e5231cee67eeba5b2a0f99088bc70e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8990ca0e19d8ed7b78958963e60948e2"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a8990ca0e19d8ed7b78958963e60948e2"><td class="mdescLeft"> </td><td class="mdescRight">Exponentiate a point in EFq by an element of Fp. <a href="#a8990ca0e19d8ed7b78958963e60948e2">More...</a><br /></td></tr>
<tr class="separator:a8990ca0e19d8ed7b78958963e60948e2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2618ae4b4fc8f2838a6550abfb4448ca"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a2618ae4b4fc8f2838a6550abfb4448ca"><td class="mdescLeft"> </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>
<tr class="separator:a2618ae4b4fc8f2838a6550abfb4448ca"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:abbcd39b964e4fd685d1dba73ec110c86"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:abbcd39b964e4fd685d1dba73ec110c86"><td class="mdescLeft"> </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>
<tr class="separator:abbcd39b964e4fd685d1dba73ec110c86"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6cf130d65a5f35237a88046faad43c0a"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a6cf130d65a5f35237a88046faad43c0a"><td class="mdescLeft"> </td><td class="mdescRight">Add two points in EFq. <a href="#a6cf130d65a5f35237a88046faad43c0a">More...</a><br /></td></tr>
<tr class="separator:a6cf130d65a5f35237a88046faad43c0a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a975f92abdaf431f2fb152fca84d468b3"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a975f92abdaf431f2fb152fca84d468b3"><td class="mdescLeft"> </td><td class="mdescRight">Double a point in EFq. <a href="#a975f92abdaf431f2fb152fca84d468b3">More...</a><br /></td></tr>
<tr class="separator:a975f92abdaf431f2fb152fca84d468b3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a23b6331263b002e6e07d2be5216fd6e8"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a23b6331263b002e6e07d2be5216fd6e8"><td class="mdescLeft"> </td><td class="mdescRight">Double a point in EFq. <a href="#a23b6331263b002e6e07d2be5216fd6e8">More...</a><br /></td></tr>
<tr class="separator:a23b6331263b002e6e07d2be5216fd6e8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:abf04f5ec866fc77d0203beb8a8991f25"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:abf04f5ec866fc77d0203beb8a8991f25"><td class="mdescLeft"> </td><td class="mdescRight">Add two points in EFq. <a href="#abf04f5ec866fc77d0203beb8a8991f25">More...</a><br /></td></tr>
<tr class="separator:abf04f5ec866fc77d0203beb8a8991f25"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a40588e2618ed9a38043532785a8d5785"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a40588e2618ed9a38043532785a8d5785"><td class="mdescLeft"> </td><td class="mdescRight">Generate a random point in EFq. <a href="#a40588e2618ed9a38043532785a8d5785">More...</a><br /></td></tr>
<tr class="separator:a40588e2618ed9a38043532785a8d5785"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7d1841f9e29bc604054536de7a4a861d"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a7d1841f9e29bc604054536de7a4a861d"><td class="mdescLeft"> </td><td class="mdescRight">Set a point's value. <a href="#a7d1841f9e29bc604054536de7a4a861d">More...</a><br /></td></tr>
<tr class="separator:a7d1841f9e29bc604054536de7a4a861d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae38257cf97872a4fa855033ad44e2e10"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:ae38257cf97872a4fa855033ad44e2e10"><td class="mdescLeft"> </td><td class="mdescRight">Test if a point is infinity. <a href="#ae38257cf97872a4fa855033ad44e2e10">More...</a><br /></td></tr>
<tr class="separator:ae38257cf97872a4fa855033ad44e2e10"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a97ce025667b076986a6d92b3d41a7827"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a97ce025667b076986a6d92b3d41a7827"><td class="mdescLeft"> </td><td class="mdescRight">Convert a point from Affine to Jacobi representation. <a href="#a97ce025667b076986a6d92b3d41a7827">More...</a><br /></td></tr>
<tr class="separator:a97ce025667b076986a6d92b3d41a7827"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aaf3f26e855b85e869cb80fae780a4e6a"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:aaf3f26e855b85e869cb80fae780a4e6a"><td class="mdescLeft"> </td><td class="mdescRight">Convert a point from Jacobi to Affine representation. <a href="#aaf3f26e855b85e869cb80fae780a4e6a">More...</a><br /></td></tr>
<tr class="separator:aaf3f26e855b85e869cb80fae780a4e6a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0f7309ab07d4d3e0556a32f1839ae6fe"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a0f7309ab07d4d3e0556a32f1839ae6fe"><td class="mdescLeft"> </td><td class="mdescRight">Negate a point on EFq. <a href="#a0f7309ab07d4d3e0556a32f1839ae6fe">More...</a><br /></td></tr>
<tr class="separator:a0f7309ab07d4d3e0556a32f1839ae6fe"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7fbfe9d25cf08f4dcbd950cfb07471ff"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a7fbfe9d25cf08f4dcbd950cfb07471ff"><td class="mdescLeft"> </td><td class="mdescRight">Test if two points on EFq are equal. <a href="#a7fbfe9d25cf08f4dcbd950cfb07471ff">More...</a><br /></td></tr>
<tr class="separator:a7fbfe9d25cf08f4dcbd950cfb07471ff"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:abf80ad8b8e3e506f4c46ec57de1c4846"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:abf80ad8b8e3e506f4c46ec57de1c4846"><td class="mdescLeft"> </td><td class="mdescRight">Hashes an arbitrary message to a point on EFq. <a href="#abf80ad8b8e3e506f4c46ec57de1c4846">More...</a><br /></td></tr>
<tr class="separator:abf80ad8b8e3e506f4c46ec57de1c4846"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7a7863639a5b96d44522d579d7d32e40"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a7a7863639a5b96d44522d579d7d32e40"><td class="mdescLeft"> </td><td class="mdescRight">Copy a point's value. <a href="#a7a7863639a5b96d44522d579d7d32e40">More...</a><br /></td></tr>
<tr class="separator:a7a7863639a5b96d44522d579d7d32e40"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:acfc458ea689ea3aa637c9c817dfa44c5"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:acfc458ea689ea3aa637c9c817dfa44c5"><td class="mdescLeft"> </td><td class="mdescRight">Test if two points on EFq are equal. <a href="#acfc458ea689ea3aa637c9c817dfa44c5">More...</a><br /></td></tr>
<tr class="separator:acfc458ea689ea3aa637c9c817dfa44c5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a9b2fcab6bc74601f9c302c5b34400ae4"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a9b2fcab6bc74601f9c302c5b34400ae4"><td class="mdescLeft"> </td><td class="mdescRight">Conditionally Set a point's value to one of two values. <a href="#a9b2fcab6bc74601f9c302c5b34400ae4">More...</a><br /></td></tr>
<tr class="separator:a9b2fcab6bc74601f9c302c5b34400ae4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1a31d069739c4da17011280a8ae6354a"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a1a31d069739c4da17011280a8ae6354a"><td class="mdescLeft"> </td><td class="mdescRight">Copy a point's value. <a href="#a1a31d069739c4da17011280a8ae6354a">More...</a><br /></td></tr>
<tr class="separator:a1a31d069739c4da17011280a8ae6354a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a73fd77b7cc14c0decd95fd294b5b250c"><td class="memItemLeft" align="right" valign="top">void </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>
<tr class="memdesc:a73fd77b7cc14c0decd95fd294b5b250c"><td class="mdescLeft"> </td><td class="mdescRight">Set an element's value to infinity. <a href="#a73fd77b7cc14c0decd95fd294b5b250c">More...</a><br /></td></tr>
<tr class="separator:a73fd77b7cc14c0decd95fd294b5b250c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a81470fed188d5043f89b6b8ab6031a42"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a81470fed188d5043f89b6b8ab6031a42"><td class="mdescLeft"> </td><td class="mdescRight">Test if a point is on EFq. <a href="#a81470fed188d5043f89b6b8ab6031a42">More...</a><br /></td></tr>
<tr class="separator:a81470fed188d5043f89b6b8ab6031a42"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ada751265a36ee3236fce90105a62909e"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:ada751265a36ee3236fce90105a62909e"><td class="mdescLeft"> </td><td class="mdescRight">Test if a point is on EFq. <a href="#ada751265a36ee3236fce90105a62909e">More...</a><br /></td></tr>
<tr class="separator:ada751265a36ee3236fce90105a62909e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a15bda5d411f7c6d602994e6444034414"><td class="memItemLeft" align="right" valign="top">int </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>
<tr class="memdesc:a15bda5d411f7c6d602994e6444034414"><td class="mdescLeft"> </td><td class="mdescRight">Generate a random point in EFq. <a href="#a15bda5d411f7c6d602994e6444034414">More...</a><br /></td></tr>
<tr class="separator:a15bda5d411f7c6d602994e6444034414"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Definition of EFq math. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="abf04f5ec866fc77d0203beb8a8991f25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf04f5ec866fc77d0203beb8a8991f25">◆ </a></span>EFqAdd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqAdd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>left</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>right</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add two points in EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>of adding left and right. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be added. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be added. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6cf130d65a5f35237a88046faad43c0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6cf130d65a5f35237a88046faad43c0a">◆ </a></span>EFqAffineAdd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqAffineAdd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>left</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>right</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add two points in EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>of adding left and right. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be added. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be added. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a975f92abdaf431f2fb152fca84d468b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a975f92abdaf431f2fb152fca84d468b3">◆ </a></span>EFqAffineDbl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqAffineDbl </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Double a point in EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the value to double. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a8990ca0e19d8ed7b78958963e60948e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8990ca0e19d8ed7b78958963e60948e2">◆ </a></span>EFqAffineExp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqAffineExp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const * </td>
<td class="paramname"><em>exp</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Exponentiate a point in EFq by an element of Fp. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>the base. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exp</td><td>the exponent. </td></tr>
</table>
</dd>
</dl>
<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>
<dd>
1 on success, 0 on failure </dd></dl>
</div>
</div>
<a id="a2618ae4b4fc8f2838a6550abfb4448ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2618ae4b4fc8f2838a6550abfb4448ca">◆ </a></span>EFqAffineMultiExp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqAffineMultiExp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>base0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const * </td>
<td class="paramname"><em>exp0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>base1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const * </td>
<td class="paramname"><em>exp1</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sum the results of exponentiating two points in EFq by elements of Fp. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base0</td><td>the first base. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exp0</td><td>the first exponent. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base1</td><td>the second base. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exp1</td><td>the second exponent. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a9b2fcab6bc74601f9c302c5b34400ae4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b2fcab6bc74601f9c302c5b34400ae4">◆ </a></span>EFqCondSet()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqCondSet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>true_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>false_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>truth_val</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Conditionally Set a point's value to one of two values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">true_val</td><td>value to set if condition is true. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">false_val</td><td>value to set if condition is false. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">truth_val</td><td>value of condition. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7a7863639a5b96d44522d579d7d32e40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a7863639a5b96d44522d579d7d32e40">◆ </a></span>EFqCp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqCp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy a point's value. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>copy target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>copy source. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a23b6331263b002e6e07d2be5216fd6e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23b6331263b002e6e07d2be5216fd6e8">◆ </a></span>EFqDbl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqDbl </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Double a point in EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the value to double. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7fbfe9d25cf08f4dcbd950cfb07471ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fbfe9d25cf08f4dcbd950cfb07471ff">◆ </a></span>EFqEq()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqEq </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>left</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>right</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if two points on EFq are equal. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be tested. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be tested. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="acfc458ea689ea3aa637c9c817dfa44c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfc458ea689ea3aa637c9c817dfa44c5">◆ </a></span>EFqEqAffine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqEqAffine </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>left</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>right</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if two points on EFq are equal. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">left</td><td>The first operand to be tested. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">right</td><td>The second operand to be tested. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a97ce025667b076986a6d92b3d41a7827"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97ce025667b076986a6d92b3d41a7827">◆ </a></span>EFqFromAffine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqFromAffine </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a point from Affine to Jacobi representation. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>value to set. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abf80ad8b8e3e506f4c46ec57de1c4846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf80ad8b8e3e506f4c46ec57de1c4846">◆ </a></span>EFqHash()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqHash </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char const * </td>
<td class="paramname"><em>msg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> </td>
<td class="paramname"><em>hashalg</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Hashes an arbitrary message to a point on EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>buffer to reinterpret. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>length of msg in bytes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">hashalg</td><td>hash algorithm to use. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a73fd77b7cc14c0decd95fd294b5b250c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73fd77b7cc14c0decd95fd294b5b250c">◆ </a></span>EFqInf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqInf </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set an element's value to infinity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>element to set. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae38257cf97872a4fa855033ad44e2e10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae38257cf97872a4fa855033ad44e2e10">◆ </a></span>EFqIsInf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqIsInf </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if a point is infinity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the point to test. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a1a31d069739c4da17011280a8ae6354a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a31d069739c4da17011280a8ae6354a">◆ </a></span>EFqJCp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqJCp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy a point's value. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>copy target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>copy source. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ada751265a36ee3236fce90105a62909e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada751265a36ee3236fce90105a62909e">◆ </a></span>EFqJOnCurve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqJOnCurve </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if a point is on EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the point to test. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a15bda5d411f7c6d602994e6444034414"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15bda5d411f7c6d602994e6444034414">◆ </a></span>EFqJRand()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqJRand </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> </td>
<td class="paramname"><em>rnd_func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>rnd_param</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate a random point in EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>the random value. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">rnd_func</td><td>Random number generator. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">rnd_param</td><td>Pass through context data for rnd_func. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a84e5231cee67eeba5b2a0f99088bc70e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84e5231cee67eeba5b2a0f99088bc70e">◆ </a></span>EFqMulSSCM()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqMulSSCM </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const * </td>
<td class="paramname"><em>exp</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Multiply two points in EFq. </p>
<p>This function is mitigated against software side-channel attacks.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>of multiplying left and right. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The first operand to be multiplied. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exp</td><td>The second operand to be multiplied. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abbcd39b964e4fd685d1dba73ec110c86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbcd39b964e4fd685d1dba73ec110c86">◆ </a></span>EFqMultiExp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqMultiExp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>base0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const * </td>
<td class="paramname"><em>exp0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>base1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fp_elem.html">FpElem</a> const * </td>
<td class="paramname"><em>exp1</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sum the results of exponentiating two points in EFq by elements of Fp. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base0</td><td>the first base. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exp0</td><td>the first exponent. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base1</td><td>the second base. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exp1</td><td>the second exponent. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 on failure </dd></dl>
</div>
</div>
<a id="a0f7309ab07d4d3e0556a32f1839ae6fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f7309ab07d4d3e0556a32f1839ae6fe">◆ </a></span>EFqNeg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqNeg </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Negate a point on EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>the negative of the element. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the element to negate. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a81470fed188d5043f89b6b8ab6031a42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81470fed188d5043f89b6b8ab6031a42">◆ </a></span>EFqOnCurve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqOnCurve </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> const * </td>
<td class="paramname"><em>in</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if a point is on EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>the point to test. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a40588e2618ed9a38043532785a8d5785"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40588e2618ed9a38043532785a8d5785">◆ </a></span>EFqRand()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqRand </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> </td>
<td class="paramname"><em>rnd_func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>rnd_param</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate a random point in EFq. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>the random value. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">rnd_func</td><td>Random number generator. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">rnd_param</td><td>Pass through context data for rnd_func. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
<a id="a7d1841f9e29bc604054536de7a4a861d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d1841f9e29bc604054536de7a4a861d">◆ </a></span>EFqSet()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EFqSet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fq_elem.html">FqElem</a> const * </td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_fq_elem.html">FqElem</a> const * </td>
<td class="paramname"><em>y</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a point's value. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>value to set. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>value to set. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aaf3f26e855b85e869cb80fae780a4e6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf3f26e855b85e869cb80fae780a4e6a">◆ </a></span>EFqToAffine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int EFqToAffine </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_ecc_point_fq.html">EccPointFq</a> * </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_ecc_point_jacobi_fq.html">EccPointJacobiFq</a> const * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a point from Jacobi to Affine representation. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>target. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>value to set. </td></tr>
</table>
</dd>
</dl>
<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>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.10-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="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>
<li class="footer">
© 2016-2017 Intel Corporation
</li>
</ul>
</div>
</body>
</html>