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