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: ecgroup</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('group___ec_group_primitives.html','');}); 58/* @license-end */ 59</script> 60<div id="doc-content"> 61<div class="header"> 62 <div class="summary"> 63<a href="#typedef-members">Typedefs</a> | 64<a href="#func-members">Functions</a> </div> 65 <div class="headertitle"> 66<div class="title">ecgroup<div class="ingroups"><a class="el" href="group___epid_module.html">epid&nbsp;</a> » <a class="el" href="group___epid_common.html">common</a> » <a class="el" href="group___epid_math.html">math</a></div></div> </div> 67</div><!--header--> 68<div class="contents"> 69 70<p>Elliptic curve group operations. 71<a href="#details">More...</a></p> 72<table class="memberdecls"> 73<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> 74Typedefs</h2></td></tr> 75<tr class="memitem:gac91c5a7623c17a868dd15b2e9aaf7159"><td class="memItemLeft" align="right" valign="top"><a id="gac91c5a7623c17a868dd15b2e9aaf7159"></a> 76typedef struct <a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a></td></tr> 77<tr class="memdesc:gac91c5a7623c17a868dd15b2e9aaf7159"><td class="mdescLeft"> </td><td class="mdescRight">Elliptic curve group over finite field. <br /></td></tr> 78<tr class="separator:gac91c5a7623c17a868dd15b2e9aaf7159"><td class="memSeparator" colspan="2"> </td></tr> 79<tr class="memitem:ga85c1d5e106031b385a6e23e598ac98fa"><td class="memItemLeft" align="right" valign="top"><a id="ga85c1d5e106031b385a6e23e598ac98fa"></a> 80typedef struct <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a></td></tr> 81<tr class="memdesc:ga85c1d5e106031b385a6e23e598ac98fa"><td class="mdescLeft"> </td><td class="mdescRight">Point on elliptic curve over finite field. <br /></td></tr> 82<tr class="separator:ga85c1d5e106031b385a6e23e598ac98fa"><td class="memSeparator" colspan="2"> </td></tr> 83</table><table class="memberdecls"> 84<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> 85Functions</h2></td></tr> 86<tr class="memitem:gaf4e23677dd378ef2e0cf55df79cbdb62"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62">NewEcGroup</a> (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const *ff, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *a, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *b, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *x, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *y, <a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const *order, <a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const *cofactor, <a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> **g)</td></tr> 87<tr class="memdesc:gaf4e23677dd378ef2e0cf55df79cbdb62"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new EcGroup. <a href="#gaf4e23677dd378ef2e0cf55df79cbdb62">More...</a><br /></td></tr> 88<tr class="separator:gaf4e23677dd378ef2e0cf55df79cbdb62"><td class="memSeparator" colspan="2"> </td></tr> 89<tr class="memitem:gab7af276256c27610eda85ff432b846ea"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gab7af276256c27610eda85ff432b846ea">DeleteEcGroup</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> **g)</td></tr> 90<tr class="memdesc:gab7af276256c27610eda85ff432b846ea"><td class="mdescLeft"> </td><td class="mdescRight">Deletes a previously allocated EcGroup. <a href="#gab7af276256c27610eda85ff432b846ea">More...</a><br /></td></tr> 91<tr class="separator:gab7af276256c27610eda85ff432b846ea"><td class="memSeparator" colspan="2"> </td></tr> 92<tr class="memitem:ga6417b0ce72ba96de00c329e322fec7fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb">NewEcPoint</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> const *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> **p)</td></tr> 93<tr class="memdesc:ga6417b0ce72ba96de00c329e322fec7fb"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new EcPoint. <a href="#ga6417b0ce72ba96de00c329e322fec7fb">More...</a><br /></td></tr> 94<tr class="separator:ga6417b0ce72ba96de00c329e322fec7fb"><td class="memSeparator" colspan="2"> </td></tr> 95<tr class="memitem:ga8cb086d792bffb79b3ca07e6ca4ce0e7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga8cb086d792bffb79b3ca07e6ca4ce0e7">DeleteEcPoint</a> (<a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> **p)</td></tr> 96<tr class="memdesc:ga8cb086d792bffb79b3ca07e6ca4ce0e7"><td class="mdescLeft"> </td><td class="mdescRight">Deletes a previously allocated EcPoint. <a href="#ga8cb086d792bffb79b3ca07e6ca4ce0e7">More...</a><br /></td></tr> 97<tr class="separator:ga8cb086d792bffb79b3ca07e6ca4ce0e7"><td class="memSeparator" colspan="2"> </td></tr> 98<tr class="memitem:gad495a9f91b79984f7533c8ea4f92b3cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gad495a9f91b79984f7533c8ea4f92b3cb">ReadEcPoint</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> p_str, size_t strlen, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *p)</td></tr> 99<tr class="memdesc:gad495a9f91b79984f7533c8ea4f92b3cb"><td class="mdescLeft"> </td><td class="mdescRight">Deserializes an EcPoint from a string. <a href="#gad495a9f91b79984f7533c8ea4f92b3cb">More...</a><br /></td></tr> 100<tr class="separator:gad495a9f91b79984f7533c8ea4f92b3cb"><td class="memSeparator" colspan="2"> </td></tr> 101<tr class="memitem:ga7a8bdb9782d065bc32fd102e0ae73ccb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga7a8bdb9782d065bc32fd102e0ae73ccb">WriteEcPoint</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *p, <a class="el" href="group___epid_types.html#ga3315fb24f4c5783b6d6eb107933390b0">OctStr</a> p_str, size_t strlen)</td></tr> 102<tr class="memdesc:ga7a8bdb9782d065bc32fd102e0ae73ccb"><td class="mdescLeft"> </td><td class="mdescRight">Serializes an EcPoint to a string. <a href="#ga7a8bdb9782d065bc32fd102e0ae73ccb">More...</a><br /></td></tr> 103<tr class="separator:ga7a8bdb9782d065bc32fd102e0ae73ccb"><td class="memSeparator" colspan="2"> </td></tr> 104<tr class="memitem:ga25c9013cc76907d73765eb7a96aa8c96"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga25c9013cc76907d73765eb7a96aa8c96">EcMul</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *a, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *b, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 105<tr class="memdesc:ga25c9013cc76907d73765eb7a96aa8c96"><td class="mdescLeft"> </td><td class="mdescRight">Multiplies two elements in an elliptic curve group. <a href="#ga25c9013cc76907d73765eb7a96aa8c96">More...</a><br /></td></tr> 106<tr class="separator:ga25c9013cc76907d73765eb7a96aa8c96"><td class="memSeparator" colspan="2"> </td></tr> 107<tr class="memitem:ga01bf8d6fa60a2e445490966b3a06c270"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga01bf8d6fa60a2e445490966b3a06c270">EcExp</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *a, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const *b, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 108<tr class="memdesc:ga01bf8d6fa60a2e445490966b3a06c270"><td class="mdescLeft"> </td><td class="mdescRight">Raises a point in an elliptic curve group to a power. <a href="#ga01bf8d6fa60a2e445490966b3a06c270">More...</a><br /></td></tr> 109<tr class="separator:ga01bf8d6fa60a2e445490966b3a06c270"><td class="memSeparator" colspan="2"> </td></tr> 110<tr class="memitem:gaf3b6a548aa6f0d4f028a14feca251f57"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gaf3b6a548aa6f0d4f028a14feca251f57">EcSscmExp</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *a, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const *b, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 111<tr class="memdesc:gaf3b6a548aa6f0d4f028a14feca251f57"><td class="mdescLeft"> </td><td class="mdescRight">Software side-channel mitigated implementation of EcExp. <a href="#gaf3b6a548aa6f0d4f028a14feca251f57">More...</a><br /></td></tr> 112<tr class="separator:gaf3b6a548aa6f0d4f028a14feca251f57"><td class="memSeparator" colspan="2"> </td></tr> 113<tr class="memitem:gae96c38e004ccd2211290ad6e66415ec4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gae96c38e004ccd2211290ad6e66415ec4">EcMultiExp</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const **a, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const **b, size_t m, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 114<tr class="memdesc:gae96c38e004ccd2211290ad6e66415ec4"><td class="mdescLeft"> </td><td class="mdescRight">Multi-exponentiates elements in elliptic curve group. <a href="#gae96c38e004ccd2211290ad6e66415ec4">More...</a><br /></td></tr> 115<tr class="separator:gae96c38e004ccd2211290ad6e66415ec4"><td class="memSeparator" colspan="2"> </td></tr> 116<tr class="memitem:ga76d24378455eb96a3257fe8045c0993a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga76d24378455eb96a3257fe8045c0993a">EcMultiExpBn</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const **a, <a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const **b, size_t m, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 117<tr class="memdesc:ga76d24378455eb96a3257fe8045c0993a"><td class="mdescLeft"> </td><td class="mdescRight">Multi-exponentiates elements in elliptic curve group. <a href="#ga76d24378455eb96a3257fe8045c0993a">More...</a><br /></td></tr> 118<tr class="separator:ga76d24378455eb96a3257fe8045c0993a"><td class="memSeparator" colspan="2"> </td></tr> 119<tr class="memitem:ga40e3431d3dbe8cf7a65ada7b7811cba4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga40e3431d3dbe8cf7a65ada7b7811cba4">EcSscmMultiExp</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const **a, <a class="el" href="struct_big_num_str.html">BigNumStr</a> const **b, size_t m, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 120<tr class="memdesc:ga40e3431d3dbe8cf7a65ada7b7811cba4"><td class="mdescLeft"> </td><td class="mdescRight">Software side-channel mitigated implementation of EcMultiExp. <a href="#ga40e3431d3dbe8cf7a65ada7b7811cba4">More...</a><br /></td></tr> 121<tr class="separator:ga40e3431d3dbe8cf7a65ada7b7811cba4"><td class="memSeparator" colspan="2"> </td></tr> 122<tr class="memitem:ga3f96c43d14d24de0f7a5e214aef64196"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga3f96c43d14d24de0f7a5e214aef64196">EcGetRandom</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> rnd_func, void *rnd_func_param, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 123<tr class="memdesc:ga3f96c43d14d24de0f7a5e214aef64196"><td class="mdescLeft"> </td><td class="mdescRight">Generates a random element from an elliptic curve group. <a href="#ga3f96c43d14d24de0f7a5e214aef64196">More...</a><br /></td></tr> 124<tr class="separator:ga3f96c43d14d24de0f7a5e214aef64196"><td class="memSeparator" colspan="2"> </td></tr> 125<tr class="memitem:ga48ec5ae951c9f49d8d7d983234eea921"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga48ec5ae951c9f49d8d7d983234eea921">EcInGroup</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> p_str, size_t strlen, <a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> *in_group)</td></tr> 126<tr class="memdesc:ga48ec5ae951c9f49d8d7d983234eea921"><td class="mdescLeft"> </td><td class="mdescRight">Checks if a point is in an elliptic curve group. <a href="#ga48ec5ae951c9f49d8d7d983234eea921">More...</a><br /></td></tr> 127<tr class="separator:ga48ec5ae951c9f49d8d7d983234eea921"><td class="memSeparator" colspan="2"> </td></tr> 128<tr class="memitem:gaad96a1498b85d28f71514b8f7b154d82"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gaad96a1498b85d28f71514b8f7b154d82">Epid11EcHash</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> msg, size_t msg_len, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 129<tr class="memdesc:gaad96a1498b85d28f71514b8f7b154d82"><td class="mdescLeft"> </td><td class="mdescRight">Hashes an arbitrary message to an Intel(R) EPID 1.1 element in an elliptic curve group. <a href="#gaad96a1498b85d28f71514b8f7b154d82">More...</a><br /></td></tr> 130<tr class="separator:gaad96a1498b85d28f71514b8f7b154d82"><td class="memSeparator" colspan="2"> </td></tr> 131<tr class="memitem:gac3067cc899e65e647390bb3bd1cabe4c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gac3067cc899e65e647390bb3bd1cabe4c">EcHash</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> msg, size_t msg_len, <a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> hash_alg, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r, uint32_t *iterations)</td></tr> 132<tr class="memdesc:gac3067cc899e65e647390bb3bd1cabe4c"><td class="mdescLeft"> </td><td class="mdescRight">Hashes an arbitrary message to an element in an elliptic curve group. <a href="#gac3067cc899e65e647390bb3bd1cabe4c">More...</a><br /></td></tr> 133<tr class="separator:gac3067cc899e65e647390bb3bd1cabe4c"><td class="memSeparator" colspan="2"> </td></tr> 134<tr class="memitem:ga8a6114a48214a327d4ec04fd25e5940e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga8a6114a48214a327d4ec04fd25e5940e">EcMakePoint</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const *x, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 135<tr class="memdesc:ga8a6114a48214a327d4ec04fd25e5940e"><td class="mdescLeft"> </td><td class="mdescRight">Sets an EcPoint variable to a point on a curve. <a href="#ga8a6114a48214a327d4ec04fd25e5940e">More...</a><br /></td></tr> 136<tr class="separator:ga8a6114a48214a327d4ec04fd25e5940e"><td class="memSeparator" colspan="2"> </td></tr> 137<tr class="memitem:ga0b6d7a3398251e9352fb29ef4abef466"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga0b6d7a3398251e9352fb29ef4abef466">EcInverse</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *p, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> *r)</td></tr> 138<tr class="memdesc:ga0b6d7a3398251e9352fb29ef4abef466"><td class="mdescLeft"> </td><td class="mdescRight">Computes the additive inverse of an EcPoint. <a href="#ga0b6d7a3398251e9352fb29ef4abef466">More...</a><br /></td></tr> 139<tr class="separator:ga0b6d7a3398251e9352fb29ef4abef466"><td class="memSeparator" colspan="2"> </td></tr> 140<tr class="memitem:gad3b3c63c48fa24e8dea07837b05bc061"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#gad3b3c63c48fa24e8dea07837b05bc061">EcIsEqual</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *a, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *b, <a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> *is_equal)</td></tr> 141<tr class="memdesc:gad3b3c63c48fa24e8dea07837b05bc061"><td class="mdescLeft"> </td><td class="mdescRight">Checks if two EcPoints are equal. <a href="#gad3b3c63c48fa24e8dea07837b05bc061">More...</a><br /></td></tr> 142<tr class="separator:gad3b3c63c48fa24e8dea07837b05bc061"><td class="memSeparator" colspan="2"> </td></tr> 143<tr class="memitem:ga9cf15b34bc4ff12e58b169dd989d8210"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___ec_group_primitives.html#ga9cf15b34bc4ff12e58b169dd989d8210">EcIsIdentity</a> (<a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> *g, <a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const *p, <a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> *is_identity)</td></tr> 144<tr class="memdesc:ga9cf15b34bc4ff12e58b169dd989d8210"><td class="mdescLeft"> </td><td class="mdescRight">Checks if an EcPoint is the identity element. <a href="#ga9cf15b34bc4ff12e58b169dd989d8210">More...</a><br /></td></tr> 145<tr class="separator:ga9cf15b34bc4ff12e58b169dd989d8210"><td class="memSeparator" colspan="2"> </td></tr> 146</table> 147<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> 148<p>Elliptic curve group operations. </p> 149<p>Provides APIs for working with Elliptic curve groups. Elliptic curve groups allow simple mathematical operations based on points that lie on a defined elliptic curve. The results of these operations also lie on the same curve.</p> 150<p>Curves themselves are defined based on elements (<a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa" title="An element in a finite field. ">FfElement</a>) of a finite field (<a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e" title="A finite field. ">FiniteField</a>). </p> 151<h2 class="groupheader">Function Documentation</h2> 152<a id="gab7af276256c27610eda85ff432b846ea"></a> 153<h2 class="memtitle"><span class="permalink"><a href="#gab7af276256c27610eda85ff432b846ea">◆ </a></span>DeleteEcGroup()</h2> 154 155<div class="memitem"> 156<div class="memproto"> 157 <table class="memname"> 158 <tr> 159 <td class="memname">void DeleteEcGroup </td> 160 <td>(</td> 161 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> ** </td> 162 <td class="paramname"><em>g</em></td><td>)</td> 163 <td></td> 164 </tr> 165 </table> 166</div><div class="memdoc"> 167 168<p>Deletes a previously allocated EcGroup. </p> 169<p>Frees memory pointed to by elliptic curve group. Nulls the pointer.</p> 170<dl class="params"><dt>Parameters</dt><dd> 171 <table class="params"> 172 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. Can be NULL.</td></tr> 173 </table> 174 </dd> 175</dl> 176<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd></dl> 177 178</div> 179</div> 180<a id="ga8cb086d792bffb79b3ca07e6ca4ce0e7"></a> 181<h2 class="memtitle"><span class="permalink"><a href="#ga8cb086d792bffb79b3ca07e6ca4ce0e7">◆ </a></span>DeleteEcPoint()</h2> 182 183<div class="memitem"> 184<div class="memproto"> 185 <table class="memname"> 186 <tr> 187 <td class="memname">void DeleteEcPoint </td> 188 <td>(</td> 189 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> ** </td> 190 <td class="paramname"><em>p</em></td><td>)</td> 191 <td></td> 192 </tr> 193 </table> 194</div><div class="memdoc"> 195 196<p>Deletes a previously allocated EcPoint. </p> 197<p>Frees memory used by a point on elliptic curve group. Nulls the pointer.</p> 198<dl class="params"><dt>Parameters</dt><dd> 199 <table class="params"> 200 <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The EcPoint. Can be NULL.</td></tr> 201 </table> 202 </dd> 203</dl> 204<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 205 206</div> 207</div> 208<a id="ga01bf8d6fa60a2e445490966b3a06c270"></a> 209<h2 class="memtitle"><span class="permalink"><a href="#ga01bf8d6fa60a2e445490966b3a06c270">◆ </a></span>EcExp()</h2> 210 211<div class="memitem"> 212<div class="memproto"> 213 <table class="memname"> 214 <tr> 215 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcExp </td> 216 <td>(</td> 217 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 218 <td class="paramname"><em>g</em>, </td> 219 </tr> 220 <tr> 221 <td class="paramkey"></td> 222 <td></td> 223 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 224 <td class="paramname"><em>a</em>, </td> 225 </tr> 226 <tr> 227 <td class="paramkey"></td> 228 <td></td> 229 <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const * </td> 230 <td class="paramname"><em>b</em>, </td> 231 </tr> 232 <tr> 233 <td class="paramkey"></td> 234 <td></td> 235 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 236 <td class="paramname"><em>r</em> </td> 237 </tr> 238 <tr> 239 <td></td> 240 <td>)</td> 241 <td></td><td></td> 242 </tr> 243 </table> 244</div><div class="memdoc"> 245 246<p>Raises a point in an elliptic curve group to a power. </p> 247<p>This exponentiation operation is also known as element multiplication for elliptic curve groups. </p><dl class="params"><dt>Parameters</dt><dd> 248 <table class="params"> 249 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 250 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The base. </td></tr> 251 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The power. Power must be less than the order of the elliptic curve group. </td></tr> 252 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising a to the power b.</td></tr> 253 </table> 254 </dd> 255</dl> 256<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 257<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 258<dd> 259<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 260 261</div> 262</div> 263<a id="ga3f96c43d14d24de0f7a5e214aef64196"></a> 264<h2 class="memtitle"><span class="permalink"><a href="#ga3f96c43d14d24de0f7a5e214aef64196">◆ </a></span>EcGetRandom()</h2> 265 266<div class="memitem"> 267<div class="memproto"> 268 <table class="memname"> 269 <tr> 270 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcGetRandom </td> 271 <td>(</td> 272 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 273 <td class="paramname"><em>g</em>, </td> 274 </tr> 275 <tr> 276 <td class="paramkey"></td> 277 <td></td> 278 <td class="paramtype"><a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c">BitSupplier</a> </td> 279 <td class="paramname"><em>rnd_func</em>, </td> 280 </tr> 281 <tr> 282 <td class="paramkey"></td> 283 <td></td> 284 <td class="paramtype">void * </td> 285 <td class="paramname"><em>rnd_func_param</em>, </td> 286 </tr> 287 <tr> 288 <td class="paramkey"></td> 289 <td></td> 290 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 291 <td class="paramname"><em>r</em> </td> 292 </tr> 293 <tr> 294 <td></td> 295 <td>)</td> 296 <td></td><td></td> 297 </tr> 298 </table> 299</div><div class="memdoc"> 300 301<p>Generates a random element from an elliptic curve group. </p> 302<p>This function is only available for G1 and GT.</p> 303<dl class="params"><dt>Parameters</dt><dd> 304 <table class="params"> 305 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 306 <tr><td class="paramdir">[in]</td><td class="paramname">rnd_func</td><td>Random number generator. </td></tr> 307 <tr><td class="paramdir">[in]</td><td class="paramname">rnd_func_param</td><td>Pass through context data for rnd_func. </td></tr> 308 <tr><td class="paramdir">[in,out]</td><td class="paramname">r</td><td>Output random elliptic curve element.</td></tr> 309 </table> 310 </dd> 311</dl> 312<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 313<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd> 314<dd> 315<a class="el" href="group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c" title="Generates random data. ">BitSupplier</a> </dd></dl> 316 317</div> 318</div> 319<a id="gac3067cc899e65e647390bb3bd1cabe4c"></a> 320<h2 class="memtitle"><span class="permalink"><a href="#gac3067cc899e65e647390bb3bd1cabe4c">◆ </a></span>EcHash()</h2> 321 322<div class="memitem"> 323<div class="memproto"> 324 <table class="memname"> 325 <tr> 326 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcHash </td> 327 <td>(</td> 328 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 329 <td class="paramname"><em>g</em>, </td> 330 </tr> 331 <tr> 332 <td class="paramkey"></td> 333 <td></td> 334 <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> </td> 335 <td class="paramname"><em>msg</em>, </td> 336 </tr> 337 <tr> 338 <td class="paramkey"></td> 339 <td></td> 340 <td class="paramtype">size_t </td> 341 <td class="paramname"><em>msg_len</em>, </td> 342 </tr> 343 <tr> 344 <td class="paramkey"></td> 345 <td></td> 346 <td class="paramtype"><a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> </td> 347 <td class="paramname"><em>hash_alg</em>, </td> 348 </tr> 349 <tr> 350 <td class="paramkey"></td> 351 <td></td> 352 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 353 <td class="paramname"><em>r</em>, </td> 354 </tr> 355 <tr> 356 <td class="paramkey"></td> 357 <td></td> 358 <td class="paramtype">uint32_t * </td> 359 <td class="paramname"><em>iterations</em> </td> 360 </tr> 361 <tr> 362 <td></td> 363 <td>)</td> 364 <td></td><td></td> 365 </tr> 366 </table> 367</div><div class="memdoc"> 368 369<p>Hashes an arbitrary message to an element in an elliptic curve group. </p> 370<dl class="params"><dt>Parameters</dt><dd> 371 <table class="params"> 372 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 373 <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message. </td></tr> 374 <tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The size of msg in bytes. </td></tr> 375 <tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The hash algorithm. </td></tr> 376 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The hashed value. </td></tr> 377 <tr><td class="paramdir">[out]</td><td class="paramname">iterations</td><td>The number of hash iterations needed to find a valid hash. Can be NULL.</td></tr> 378 </table> 379 </dd> 380</dl> 381<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 382<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 383<dd> 384<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 385 386</div> 387</div> 388<a id="ga48ec5ae951c9f49d8d7d983234eea921"></a> 389<h2 class="memtitle"><span class="permalink"><a href="#ga48ec5ae951c9f49d8d7d983234eea921">◆ </a></span>EcInGroup()</h2> 390 391<div class="memitem"> 392<div class="memproto"> 393 <table class="memname"> 394 <tr> 395 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcInGroup </td> 396 <td>(</td> 397 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 398 <td class="paramname"><em>g</em>, </td> 399 </tr> 400 <tr> 401 <td class="paramkey"></td> 402 <td></td> 403 <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> </td> 404 <td class="paramname"><em>p_str</em>, </td> 405 </tr> 406 <tr> 407 <td class="paramkey"></td> 408 <td></td> 409 <td class="paramtype">size_t </td> 410 <td class="paramname"><em>strlen</em>, </td> 411 </tr> 412 <tr> 413 <td class="paramkey"></td> 414 <td></td> 415 <td class="paramtype"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> * </td> 416 <td class="paramname"><em>in_group</em> </td> 417 </tr> 418 <tr> 419 <td></td> 420 <td>)</td> 421 <td></td><td></td> 422 </tr> 423 </table> 424</div><div class="memdoc"> 425 426<p>Checks if a point is in an elliptic curve group. </p> 427<dl class="params"><dt>Parameters</dt><dd> 428 <table class="params"> 429 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 430 <tr><td class="paramdir">[in]</td><td class="paramname">p_str</td><td>A serialized point. Must be a <a class="el" href="struct_g1_elem_str.html" title="Serialized G1 element. ">G1ElemStr</a> or <a class="el" href="struct_g2_elem_str.html" title="Serialized G2 element. ">G2ElemStr</a>. </td></tr> 431 <tr><td class="paramdir">[in]</td><td class="paramname">strlen</td><td>The size of p_str in bytes. </td></tr> 432 <tr><td class="paramdir">[out]</td><td class="paramname">in_group</td><td>The result of the check.</td></tr> 433 </table> 434 </dd> 435</dl> 436<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 437<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 438 439</div> 440</div> 441<a id="ga0b6d7a3398251e9352fb29ef4abef466"></a> 442<h2 class="memtitle"><span class="permalink"><a href="#ga0b6d7a3398251e9352fb29ef4abef466">◆ </a></span>EcInverse()</h2> 443 444<div class="memitem"> 445<div class="memproto"> 446 <table class="memname"> 447 <tr> 448 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcInverse </td> 449 <td>(</td> 450 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 451 <td class="paramname"><em>g</em>, </td> 452 </tr> 453 <tr> 454 <td class="paramkey"></td> 455 <td></td> 456 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 457 <td class="paramname"><em>p</em>, </td> 458 </tr> 459 <tr> 460 <td class="paramkey"></td> 461 <td></td> 462 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 463 <td class="paramname"><em>r</em> </td> 464 </tr> 465 <tr> 466 <td></td> 467 <td>)</td> 468 <td></td><td></td> 469 </tr> 470 </table> 471</div><div class="memdoc"> 472 473<p>Computes the additive inverse of an EcPoint. </p> 474<p>This inverse operation is also known as element negation for elliptic curve groups.</p> 475<dl class="params"><dt>Parameters</dt><dd> 476 <table class="params"> 477 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 478 <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The point. </td></tr> 479 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The inverted point.</td></tr> 480 </table> 481 </dd> 482</dl> 483<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 484<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 485<dd> 486<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 487 488</div> 489</div> 490<a id="gad3b3c63c48fa24e8dea07837b05bc061"></a> 491<h2 class="memtitle"><span class="permalink"><a href="#gad3b3c63c48fa24e8dea07837b05bc061">◆ </a></span>EcIsEqual()</h2> 492 493<div class="memitem"> 494<div class="memproto"> 495 <table class="memname"> 496 <tr> 497 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcIsEqual </td> 498 <td>(</td> 499 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 500 <td class="paramname"><em>g</em>, </td> 501 </tr> 502 <tr> 503 <td class="paramkey"></td> 504 <td></td> 505 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 506 <td class="paramname"><em>a</em>, </td> 507 </tr> 508 <tr> 509 <td class="paramkey"></td> 510 <td></td> 511 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 512 <td class="paramname"><em>b</em>, </td> 513 </tr> 514 <tr> 515 <td class="paramkey"></td> 516 <td></td> 517 <td class="paramtype"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> * </td> 518 <td class="paramname"><em>is_equal</em> </td> 519 </tr> 520 <tr> 521 <td></td> 522 <td>)</td> 523 <td></td><td></td> 524 </tr> 525 </table> 526</div><div class="memdoc"> 527 528<p>Checks if two EcPoints are equal. </p> 529<dl class="params"><dt>Parameters</dt><dd> 530 <table class="params"> 531 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 532 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>A point to check. </td></tr> 533 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Another point to check. </td></tr> 534 <tr><td class="paramdir">[out]</td><td class="paramname">is_equal</td><td>The result of the check.</td></tr> 535 </table> 536 </dd> 537</dl> 538<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 539<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 540<dd> 541<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 542 543</div> 544</div> 545<a id="ga9cf15b34bc4ff12e58b169dd989d8210"></a> 546<h2 class="memtitle"><span class="permalink"><a href="#ga9cf15b34bc4ff12e58b169dd989d8210">◆ </a></span>EcIsIdentity()</h2> 547 548<div class="memitem"> 549<div class="memproto"> 550 <table class="memname"> 551 <tr> 552 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcIsIdentity </td> 553 <td>(</td> 554 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 555 <td class="paramname"><em>g</em>, </td> 556 </tr> 557 <tr> 558 <td class="paramkey"></td> 559 <td></td> 560 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 561 <td class="paramname"><em>p</em>, </td> 562 </tr> 563 <tr> 564 <td class="paramkey"></td> 565 <td></td> 566 <td class="paramtype"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> * </td> 567 <td class="paramname"><em>is_identity</em> </td> 568 </tr> 569 <tr> 570 <td></td> 571 <td>)</td> 572 <td></td><td></td> 573 </tr> 574 </table> 575</div><div class="memdoc"> 576 577<p>Checks if an EcPoint is the identity element. </p> 578<p>Takes a group element P as input. It outputs true if P is the identity element of G. Otherwise, it outputs false.</p> 579<dl class="params"><dt>Parameters</dt><dd> 580 <table class="params"> 581 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 582 <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The point to check. </td></tr> 583 <tr><td class="paramdir">[out]</td><td class="paramname">is_identity</td><td>The result of the check.</td></tr> 584 </table> 585 </dd> 586</dl> 587<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 588<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 589<dd> 590<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 591 592</div> 593</div> 594<a id="ga8a6114a48214a327d4ec04fd25e5940e"></a> 595<h2 class="memtitle"><span class="permalink"><a href="#ga8a6114a48214a327d4ec04fd25e5940e">◆ </a></span>EcMakePoint()</h2> 596 597<div class="memitem"> 598<div class="memproto"> 599 <table class="memname"> 600 <tr> 601 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcMakePoint </td> 602 <td>(</td> 603 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 604 <td class="paramname"><em>g</em>, </td> 605 </tr> 606 <tr> 607 <td class="paramkey"></td> 608 <td></td> 609 <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> 610 <td class="paramname"><em>x</em>, </td> 611 </tr> 612 <tr> 613 <td class="paramkey"></td> 614 <td></td> 615 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 616 <td class="paramname"><em>r</em> </td> 617 </tr> 618 <tr> 619 <td></td> 620 <td>)</td> 621 <td></td><td></td> 622 </tr> 623 </table> 624</div><div class="memdoc"> 625 626<p>Sets an EcPoint variable to a point on a curve. </p> 627<p>This function is only available for G1.</p> 628<dl class="params"><dt>Parameters</dt><dd> 629 <table class="params"> 630 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 631 <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>The x coordinate. </td></tr> 632 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The point.</td></tr> 633 </table> 634 </dd> 635</dl> 636<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 637<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 638<dd> 639<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd> 640<dd> 641<a class="el" href="group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c" title="Creates a new finite field element. ">NewFfElement</a> </dd></dl> 642 643</div> 644</div> 645<a id="ga25c9013cc76907d73765eb7a96aa8c96"></a> 646<h2 class="memtitle"><span class="permalink"><a href="#ga25c9013cc76907d73765eb7a96aa8c96">◆ </a></span>EcMul()</h2> 647 648<div class="memitem"> 649<div class="memproto"> 650 <table class="memname"> 651 <tr> 652 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcMul </td> 653 <td>(</td> 654 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 655 <td class="paramname"><em>g</em>, </td> 656 </tr> 657 <tr> 658 <td class="paramkey"></td> 659 <td></td> 660 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 661 <td class="paramname"><em>a</em>, </td> 662 </tr> 663 <tr> 664 <td class="paramkey"></td> 665 <td></td> 666 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 667 <td class="paramname"><em>b</em>, </td> 668 </tr> 669 <tr> 670 <td class="paramkey"></td> 671 <td></td> 672 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 673 <td class="paramname"><em>r</em> </td> 674 </tr> 675 <tr> 676 <td></td> 677 <td>)</td> 678 <td></td><td></td> 679 </tr> 680 </table> 681</div><div class="memdoc"> 682 683<p>Multiplies two elements in an elliptic curve group. </p> 684<p>This multiplication operation is also known as element addition for elliptic curve groups.</p> 685<dl class="params"><dt>Parameters</dt><dd> 686 <table class="params"> 687 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 688 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The first operand to be multiplied. </td></tr> 689 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The second operand to be multiplied. </td></tr> 690 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of multiplying a and b.</td></tr> 691 </table> 692 </dd> 693</dl> 694<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 695<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 696<dd> 697<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 698 699</div> 700</div> 701<a id="gae96c38e004ccd2211290ad6e66415ec4"></a> 702<h2 class="memtitle"><span class="permalink"><a href="#gae96c38e004ccd2211290ad6e66415ec4">◆ </a></span>EcMultiExp()</h2> 703 704<div class="memitem"> 705<div class="memproto"> 706 <table class="memname"> 707 <tr> 708 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcMultiExp </td> 709 <td>(</td> 710 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 711 <td class="paramname"><em>g</em>, </td> 712 </tr> 713 <tr> 714 <td class="paramkey"></td> 715 <td></td> 716 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const ** </td> 717 <td class="paramname"><em>a</em>, </td> 718 </tr> 719 <tr> 720 <td class="paramkey"></td> 721 <td></td> 722 <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const ** </td> 723 <td class="paramname"><em>b</em>, </td> 724 </tr> 725 <tr> 726 <td class="paramkey"></td> 727 <td></td> 728 <td class="paramtype">size_t </td> 729 <td class="paramname"><em>m</em>, </td> 730 </tr> 731 <tr> 732 <td class="paramkey"></td> 733 <td></td> 734 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 735 <td class="paramname"><em>r</em> </td> 736 </tr> 737 <tr> 738 <td></td> 739 <td>)</td> 740 <td></td><td></td> 741 </tr> 742 </table> 743</div><div class="memdoc"> 744 745<p>Multi-exponentiates elements in elliptic curve group. </p> 746<p>Takes a group elements a[0], ... , a[m-1] in G and positive integers b[0], ..., b[m-1], where m is a small positive integer. Outputs r (in G) = EcExp(a[0],b[0]) * ... * EcExp(a[m-1],b[m-1]).</p> 747<dl class="params"><dt>Parameters</dt><dd> 748 <table class="params"> 749 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 750 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr> 751 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. Power must be less than the order of the elliptic curve group. </td></tr> 752 <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr> 753 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising each a to the corresponding power b and multiplying the results.</td></tr> 754 </table> 755 </dd> 756</dl> 757<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 758<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 759<dd> 760<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 761 762</div> 763</div> 764<a id="ga76d24378455eb96a3257fe8045c0993a"></a> 765<h2 class="memtitle"><span class="permalink"><a href="#ga76d24378455eb96a3257fe8045c0993a">◆ </a></span>EcMultiExpBn()</h2> 766 767<div class="memitem"> 768<div class="memproto"> 769 <table class="memname"> 770 <tr> 771 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcMultiExpBn </td> 772 <td>(</td> 773 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 774 <td class="paramname"><em>g</em>, </td> 775 </tr> 776 <tr> 777 <td class="paramkey"></td> 778 <td></td> 779 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const ** </td> 780 <td class="paramname"><em>a</em>, </td> 781 </tr> 782 <tr> 783 <td class="paramkey"></td> 784 <td></td> 785 <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const ** </td> 786 <td class="paramname"><em>b</em>, </td> 787 </tr> 788 <tr> 789 <td class="paramkey"></td> 790 <td></td> 791 <td class="paramtype">size_t </td> 792 <td class="paramname"><em>m</em>, </td> 793 </tr> 794 <tr> 795 <td class="paramkey"></td> 796 <td></td> 797 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 798 <td class="paramname"><em>r</em> </td> 799 </tr> 800 <tr> 801 <td></td> 802 <td>)</td> 803 <td></td><td></td> 804 </tr> 805 </table> 806</div><div class="memdoc"> 807 808<p>Multi-exponentiates elements in elliptic curve group. </p> 809<p>Takes a group elements a[0], ... , a[m-1] in G and positive integers b[0], ..., b[m-1], where m is a small positive integer. Outputs r (in G) = EcExp(a[0],b[0]) * ... * EcExp(a[m-1],b[m-1]).</p> 810<dl class="params"><dt>Parameters</dt><dd> 811 <table class="params"> 812 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 813 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr> 814 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. Power must be less than the order of the elliptic curve group. </td></tr> 815 <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr> 816 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising each a to the corresponding power b and multiplying the results.</td></tr> 817 </table> 818 </dd> 819</dl> 820<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 821<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 822<dd> 823<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 824 825</div> 826</div> 827<a id="gaf3b6a548aa6f0d4f028a14feca251f57"></a> 828<h2 class="memtitle"><span class="permalink"><a href="#gaf3b6a548aa6f0d4f028a14feca251f57">◆ </a></span>EcSscmExp()</h2> 829 830<div class="memitem"> 831<div class="memproto"> 832 <table class="memname"> 833 <tr> 834 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcSscmExp </td> 835 <td>(</td> 836 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 837 <td class="paramname"><em>g</em>, </td> 838 </tr> 839 <tr> 840 <td class="paramkey"></td> 841 <td></td> 842 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 843 <td class="paramname"><em>a</em>, </td> 844 </tr> 845 <tr> 846 <td class="paramkey"></td> 847 <td></td> 848 <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const * </td> 849 <td class="paramname"><em>b</em>, </td> 850 </tr> 851 <tr> 852 <td class="paramkey"></td> 853 <td></td> 854 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 855 <td class="paramname"><em>r</em> </td> 856 </tr> 857 <tr> 858 <td></td> 859 <td>)</td> 860 <td></td><td></td> 861 </tr> 862 </table> 863</div><div class="memdoc"> 864 865<p>Software side-channel mitigated implementation of EcExp. </p> 866<p>This exponentiation operation is also known as element multiplication for elliptic curve groups.</p> 867<dl class="section attention"><dt>Attention</dt><dd>The reference implementation of EcSscmExp calls EcExp directly because the implementation of EcExp is already side channel mitigated. Implementers providing their own versions of this function are responsible for ensuring that EcSscmExp is side channel mitigated per section 8 of the Intel(R) EPID 2.0 spec.</dd></dl> 868<dl class="params"><dt>Parameters</dt><dd> 869 <table class="params"> 870 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 871 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The base. </td></tr> 872 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The power. Power must be less than the order of the elliptic curve group. </td></tr> 873 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising a to the power b.</td></tr> 874 </table> 875 </dd> 876</dl> 877<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 878<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 879<dd> 880<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 881 882</div> 883</div> 884<a id="ga40e3431d3dbe8cf7a65ada7b7811cba4"></a> 885<h2 class="memtitle"><span class="permalink"><a href="#ga40e3431d3dbe8cf7a65ada7b7811cba4">◆ </a></span>EcSscmMultiExp()</h2> 886 887<div class="memitem"> 888<div class="memproto"> 889 <table class="memname"> 890 <tr> 891 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EcSscmMultiExp </td> 892 <td>(</td> 893 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 894 <td class="paramname"><em>g</em>, </td> 895 </tr> 896 <tr> 897 <td class="paramkey"></td> 898 <td></td> 899 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const ** </td> 900 <td class="paramname"><em>a</em>, </td> 901 </tr> 902 <tr> 903 <td class="paramkey"></td> 904 <td></td> 905 <td class="paramtype"><a class="el" href="struct_big_num_str.html">BigNumStr</a> const ** </td> 906 <td class="paramname"><em>b</em>, </td> 907 </tr> 908 <tr> 909 <td class="paramkey"></td> 910 <td></td> 911 <td class="paramtype">size_t </td> 912 <td class="paramname"><em>m</em>, </td> 913 </tr> 914 <tr> 915 <td class="paramkey"></td> 916 <td></td> 917 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 918 <td class="paramname"><em>r</em> </td> 919 </tr> 920 <tr> 921 <td></td> 922 <td>)</td> 923 <td></td><td></td> 924 </tr> 925 </table> 926</div><div class="memdoc"> 927 928<p>Software side-channel mitigated implementation of EcMultiExp. </p> 929<p>Takes a group elements a[0], ... , a[m-1] in G and positive integers b[0], ..., b[m-1], where m is a small positive integer. Outputs r (in G) = EcExp(a[0],b[0]) * ... * EcExp(a[m-1],b[m-1]).</p> 930<dl class="section attention"><dt>Attention</dt><dd>The reference implementation of EcSscmMultiExp calls EcMultiExp directly because the implementation of EcMultiExp is already side channel mitigated. Implementers providing their own versions of this function are responsible for ensuring that EcSscmMultiExp is side channel mitigated per section 8 of the Intel(R) EPID 2.0 spec.</dd></dl> 931<dl class="params"><dt>Parameters</dt><dd> 932 <table class="params"> 933 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 934 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The bases. </td></tr> 935 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The powers. Power must be less than the order of the elliptic curve group. </td></tr> 936 <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of entries in a and b. </td></tr> 937 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The result of raising each a to the corresponding power b and multiplying the results.</td></tr> 938 </table> 939 </dd> 940</dl> 941<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 942<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 943<dd> 944<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 945 946</div> 947</div> 948<a id="gaad96a1498b85d28f71514b8f7b154d82"></a> 949<h2 class="memtitle"><span class="permalink"><a href="#gaad96a1498b85d28f71514b8f7b154d82">◆ </a></span>Epid11EcHash()</h2> 950 951<div class="memitem"> 952<div class="memproto"> 953 <table class="memname"> 954 <tr> 955 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> Epid11EcHash </td> 956 <td>(</td> 957 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 958 <td class="paramname"><em>g</em>, </td> 959 </tr> 960 <tr> 961 <td class="paramkey"></td> 962 <td></td> 963 <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> </td> 964 <td class="paramname"><em>msg</em>, </td> 965 </tr> 966 <tr> 967 <td class="paramkey"></td> 968 <td></td> 969 <td class="paramtype">size_t </td> 970 <td class="paramname"><em>msg_len</em>, </td> 971 </tr> 972 <tr> 973 <td class="paramkey"></td> 974 <td></td> 975 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 976 <td class="paramname"><em>r</em> </td> 977 </tr> 978 <tr> 979 <td></td> 980 <td>)</td> 981 <td></td><td></td> 982 </tr> 983 </table> 984</div><div class="memdoc"> 985 986<p>Hashes an arbitrary message to an Intel(R) EPID 1.1 element in an elliptic curve group. </p> 987<dl class="params"><dt>Parameters</dt><dd> 988 <table class="params"> 989 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 990 <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message. </td></tr> 991 <tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The size of msg in bytes. </td></tr> 992 <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The hashed value.</td></tr> 993 </table> 994 </dd> 995</dl> 996<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 997<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 998<dd> 999<a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 1000 1001</div> 1002</div> 1003<a id="gaf4e23677dd378ef2e0cf55df79cbdb62"></a> 1004<h2 class="memtitle"><span class="permalink"><a href="#gaf4e23677dd378ef2e0cf55df79cbdb62">◆ </a></span>NewEcGroup()</h2> 1005 1006<div class="memitem"> 1007<div class="memproto"> 1008 <table class="memname"> 1009 <tr> 1010 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewEcGroup </td> 1011 <td>(</td> 1012 <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e">FiniteField</a> const * </td> 1013 <td class="paramname"><em>ff</em>, </td> 1014 </tr> 1015 <tr> 1016 <td class="paramkey"></td> 1017 <td></td> 1018 <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> 1019 <td class="paramname"><em>a</em>, </td> 1020 </tr> 1021 <tr> 1022 <td class="paramkey"></td> 1023 <td></td> 1024 <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> 1025 <td class="paramname"><em>b</em>, </td> 1026 </tr> 1027 <tr> 1028 <td class="paramkey"></td> 1029 <td></td> 1030 <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> 1031 <td class="paramname"><em>x</em>, </td> 1032 </tr> 1033 <tr> 1034 <td class="paramkey"></td> 1035 <td></td> 1036 <td class="paramtype"><a class="el" href="group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa">FfElement</a> const * </td> 1037 <td class="paramname"><em>y</em>, </td> 1038 </tr> 1039 <tr> 1040 <td class="paramkey"></td> 1041 <td></td> 1042 <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const * </td> 1043 <td class="paramname"><em>order</em>, </td> 1044 </tr> 1045 <tr> 1046 <td class="paramkey"></td> 1047 <td></td> 1048 <td class="paramtype"><a class="el" href="group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718">BigNum</a> const * </td> 1049 <td class="paramname"><em>cofactor</em>, </td> 1050 </tr> 1051 <tr> 1052 <td class="paramkey"></td> 1053 <td></td> 1054 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> ** </td> 1055 <td class="paramname"><em>g</em> </td> 1056 </tr> 1057 <tr> 1058 <td></td> 1059 <td>)</td> 1060 <td></td><td></td> 1061 </tr> 1062 </table> 1063</div><div class="memdoc"> 1064 1065<p>Constructs a new EcGroup. </p> 1066<p>Allocates memory and creates a new elliptic curve group.</p> 1067<p>Use <a class="el" href="group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f" title="Frees a previously allocated FiniteField. ">DeleteFiniteField()</a> to free memory.</p> 1068<dl class="params"><dt>Parameters</dt><dd> 1069 <table class="params"> 1070 <tr><td class="paramdir">[in]</td><td class="paramname">ff</td><td>The finite field on which the curve is based. </td></tr> 1071 <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The A value of the elliptic curve. </td></tr> 1072 <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The B value of the elliptic curve. </td></tr> 1073 <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>The X-coordinate of the base point of the elliptic curve. </td></tr> 1074 <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>The Y-coordinate of the base point of the elliptic curve. </td></tr> 1075 <tr><td class="paramdir">[in]</td><td class="paramname">order</td><td>The order of the elliptic curve group. </td></tr> 1076 <tr><td class="paramdir">[in]</td><td class="paramname">cofactor</td><td>The co-factor of the elliptic curve. </td></tr> 1077 <tr><td class="paramdir">[out]</td><td class="paramname">g</td><td>The newly constructed elliptic curve group.</td></tr> 1078 </table> 1079 </dd> 1080</dl> 1081<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 1082<dl class="section attention"><dt>Attention</dt><dd>It is the responsibility of the caller to ensure that ff exists for the entire lifetime of the new EcGroup.</dd></dl> 1083<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gab7af276256c27610eda85ff432b846ea" title="Deletes a previously allocated EcGroup. ">DeleteEcGroup</a> </dd></dl> 1084 1085</div> 1086</div> 1087<a id="ga6417b0ce72ba96de00c329e322fec7fb"></a> 1088<h2 class="memtitle"><span class="permalink"><a href="#ga6417b0ce72ba96de00c329e322fec7fb">◆ </a></span>NewEcPoint()</h2> 1089 1090<div class="memitem"> 1091<div class="memproto"> 1092 <table class="memname"> 1093 <tr> 1094 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> NewEcPoint </td> 1095 <td>(</td> 1096 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> const * </td> 1097 <td class="paramname"><em>g</em>, </td> 1098 </tr> 1099 <tr> 1100 <td class="paramkey"></td> 1101 <td></td> 1102 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> ** </td> 1103 <td class="paramname"><em>p</em> </td> 1104 </tr> 1105 <tr> 1106 <td></td> 1107 <td>)</td> 1108 <td></td><td></td> 1109 </tr> 1110 </table> 1111</div><div class="memdoc"> 1112 1113<p>Creates a new EcPoint. </p> 1114<p>Allocates memory and creates a new point on elliptic curve group.</p> 1115<p>Use <a class="el" href="group___ec_group_primitives.html#ga8cb086d792bffb79b3ca07e6ca4ce0e7" title="Deletes a previously allocated EcPoint. ">DeleteEcPoint()</a> to free memory.</p> 1116<dl class="params"><dt>Parameters</dt><dd> 1117 <table class="params"> 1118 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>Elliptic curve group. </td></tr> 1119 <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>Newly constructed point on the elliptic curve group g.</td></tr> 1120 </table> 1121 </dd> 1122</dl> 1123<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 1124<dl class="section attention"><dt>Attention</dt><dd>It is the responsibility of the caller to ensure that g exists for the entire lifetime of the new EcPoint.</dd></dl> 1125<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62" title="Constructs a new EcGroup. ">NewEcGroup</a> </dd> 1126<dd> 1127<a class="el" href="group___ec_group_primitives.html#ga8cb086d792bffb79b3ca07e6ca4ce0e7" title="Deletes a previously allocated EcPoint. ">DeleteEcPoint</a> </dd></dl> 1128 1129</div> 1130</div> 1131<a id="gad495a9f91b79984f7533c8ea4f92b3cb"></a> 1132<h2 class="memtitle"><span class="permalink"><a href="#gad495a9f91b79984f7533c8ea4f92b3cb">◆ </a></span>ReadEcPoint()</h2> 1133 1134<div class="memitem"> 1135<div class="memproto"> 1136 <table class="memname"> 1137 <tr> 1138 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> ReadEcPoint </td> 1139 <td>(</td> 1140 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 1141 <td class="paramname"><em>g</em>, </td> 1142 </tr> 1143 <tr> 1144 <td class="paramkey"></td> 1145 <td></td> 1146 <td class="paramtype"><a class="el" href="group___epid_types.html#gace6876a045f2c2694444b35ccb0844e2">ConstOctStr</a> </td> 1147 <td class="paramname"><em>p_str</em>, </td> 1148 </tr> 1149 <tr> 1150 <td class="paramkey"></td> 1151 <td></td> 1152 <td class="paramtype">size_t </td> 1153 <td class="paramname"><em>strlen</em>, </td> 1154 </tr> 1155 <tr> 1156 <td class="paramkey"></td> 1157 <td></td> 1158 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> * </td> 1159 <td class="paramname"><em>p</em> </td> 1160 </tr> 1161 <tr> 1162 <td></td> 1163 <td>)</td> 1164 <td></td><td></td> 1165 </tr> 1166 </table> 1167</div><div class="memdoc"> 1168 1169<p>Deserializes an EcPoint from a string. </p> 1170<dl class="params"><dt>Parameters</dt><dd> 1171 <table class="params"> 1172 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 1173 <tr><td class="paramdir">[in]</td><td class="paramname">p_str</td><td>The serialized value. </td></tr> 1174 <tr><td class="paramdir">[in]</td><td class="paramname">strlen</td><td>The size of p_str in bytes. </td></tr> 1175 <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>The target EcPoint.</td></tr> 1176 </table> 1177 </dd> 1178</dl> 1179<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 1180<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 1181 1182</div> 1183</div> 1184<a id="ga7a8bdb9782d065bc32fd102e0ae73ccb"></a> 1185<h2 class="memtitle"><span class="permalink"><a href="#ga7a8bdb9782d065bc32fd102e0ae73ccb">◆ </a></span>WriteEcPoint()</h2> 1186 1187<div class="memitem"> 1188<div class="memproto"> 1189 <table class="memname"> 1190 <tr> 1191 <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> WriteEcPoint </td> 1192 <td>(</td> 1193 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159">EcGroup</a> * </td> 1194 <td class="paramname"><em>g</em>, </td> 1195 </tr> 1196 <tr> 1197 <td class="paramkey"></td> 1198 <td></td> 1199 <td class="paramtype"><a class="el" href="group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa">EcPoint</a> const * </td> 1200 <td class="paramname"><em>p</em>, </td> 1201 </tr> 1202 <tr> 1203 <td class="paramkey"></td> 1204 <td></td> 1205 <td class="paramtype"><a class="el" href="group___epid_types.html#ga3315fb24f4c5783b6d6eb107933390b0">OctStr</a> </td> 1206 <td class="paramname"><em>p_str</em>, </td> 1207 </tr> 1208 <tr> 1209 <td class="paramkey"></td> 1210 <td></td> 1211 <td class="paramtype">size_t </td> 1212 <td class="paramname"><em>strlen</em> </td> 1213 </tr> 1214 <tr> 1215 <td></td> 1216 <td>)</td> 1217 <td></td><td></td> 1218 </tr> 1219 </table> 1220</div><div class="memdoc"> 1221 1222<p>Serializes an EcPoint to a string. </p> 1223<dl class="params"><dt>Parameters</dt><dd> 1224 <table class="params"> 1225 <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>The elliptic curve group. </td></tr> 1226 <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The EcPoint to be serialized. </td></tr> 1227 <tr><td class="paramdir">[out]</td><td class="paramname">p_str</td><td>The target string. </td></tr> 1228 <tr><td class="paramdir">[in]</td><td class="paramname">strlen</td><td>the size of p_str in bytes.</td></tr> 1229 </table> 1230 </dd> 1231</dl> 1232<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl> 1233<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb" title="Creates a new EcPoint. ">NewEcPoint</a> </dd></dl> 1234 1235</div> 1236</div> 1237</div><!-- contents --> 1238</div><!-- doc-content --> 1239<!-- HTML footer for doxygen 1.8.10--> 1240<!-- start footer part --> 1241<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> 1242 <ul> 1243 <li class="footer"> 1244 © 2016-2017 Intel Corporation 1245 </li> 1246 </ul> 1247</div> 1248</body> 1249</html> 1250