Html程序  |  1147行  |  58.24 KB

<!-- 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&reg; 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&amp;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&reg; Enhanced Privacy ID SDK</a>
&#160;<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&amp;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 &lt;stddef.h&gt;</code><br />
<code>#include &quot;<a class="el" href="bitsupplier_8h.html">epid/common/bitsupplier.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="types_8h.html">epid/common/types.h</a>&quot;</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&#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>
<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>
<tr class="separator:a84e5231cee67eeba5b2a0f99088bc70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a8990ca0e19d8ed7b78958963e60948e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a2618ae4b4fc8f2838a6550abfb4448ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:abbcd39b964e4fd685d1dba73ec110c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a6cf130d65a5f35237a88046faad43c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a975f92abdaf431f2fb152fca84d468b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a23b6331263b002e6e07d2be5216fd6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:abf04f5ec866fc77d0203beb8a8991f25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a40588e2618ed9a38043532785a8d5785"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a7d1841f9e29bc604054536de7a4a861d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:ae38257cf97872a4fa855033ad44e2e10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a97ce025667b076986a6d92b3d41a7827"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:aaf3f26e855b85e869cb80fae780a4e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a0f7309ab07d4d3e0556a32f1839ae6fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a7fbfe9d25cf08f4dcbd950cfb07471ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:abf80ad8b8e3e506f4c46ec57de1c4846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a7a7863639a5b96d44522d579d7d32e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:acfc458ea689ea3aa637c9c817dfa44c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a9b2fcab6bc74601f9c302c5b34400ae4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a1a31d069739c4da17011280a8ae6354a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a73fd77b7cc14c0decd95fd294b5b250c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a81470fed188d5043f89b6b8ab6031a42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:ada751265a36ee3236fce90105a62909e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:a15bda5d411f7c6d602994e6444034414"><td class="memSeparator" colspan="2">&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>right</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>right</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</td>
          <td class="paramname"><em>in</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>exp</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>exp1</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>false_val</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>truth_val</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</td>
          <td class="paramname"><em>in</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</td>
          <td class="paramname"><em>in</em>&#160;</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">&#9670;&nbsp;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>right</em>&#160;</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">&#9670;&nbsp;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>right</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</td>
          <td class="paramname"><em>in</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</td>
          <td class="paramname"><em>result</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char const *&#160;</td>
          <td class="paramname"><em>msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</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>&#160;</td>
          <td class="paramname"><em>hashalg</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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">&#9670;&nbsp;</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 *&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</td>
          <td class="paramname"><em>in</em>&#160;</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">&#9670;&nbsp;</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 *&#160;</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">&#9670;&nbsp;</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> *&#160;</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>&#160;</td>
          <td class="paramname"><em>rnd_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>rnd_param</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>exp</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>exp1</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</td>
          <td class="paramname"><em>in</em>&#160;</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">&#9670;&nbsp;</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 *&#160;</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">&#9670;&nbsp;</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> *&#160;</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>&#160;</td>
          <td class="paramname"><em>rnd_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>rnd_param</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</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 *&#160;</td>
          <td class="paramname"><em>y</em>&#160;</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">&#9670;&nbsp;</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> *&#160;</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 *&#160;</td>
          <td class="paramname"><em>in</em>&#160;</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">
      &copy; 2016-2017 Intel Corporation
    </li>
  </ul>
</div>
</body>
</html>