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> 76Functions</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> 3231 on success, 0 on failure </dd></dl> 324 325</div> 326</div> 327<a id="a2618ae4b4fc8f2838a6550abfb4448ca"></a> 328<h2 class="memtitle"><span class="permalink"><a href="#a2618ae4b4fc8f2838a6550abfb4448ca">◆ </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