<!-- 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>