blob: 485ffa2dd971c2e4fe89dc571c9e8b4f9b7b0f06 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AMCL: ecp2_BLS381.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AMCL
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_df7310d1a865926cc859bcfb1880083f.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">ecp2_BLS381.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>ECP2 Header File.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="fp2__BLS381_8h_source.html">fp2_BLS381.h</a>&quot;</code><br />
<code>#include &quot;config_curve_BLS381.h&quot;</code><br />
</div>
<p><a href="ecp2__BLS381_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">ECP2 Structure - Elliptic Curve Point over quadratic extension field. <a href="structECP2__BLS381.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4a28bbafc3034b9d0398c70326b24acf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a4a28bbafc3034b9d0398c70326b24acf">ECP2_BLS381_isinf</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:a4a28bbafc3034b9d0398c70326b24acf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests for ECP2 point equal to infinity. <a href="#a4a28bbafc3034b9d0398c70326b24acf">More...</a><br /></td></tr>
<tr class="separator:a4a28bbafc3034b9d0398c70326b24acf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3f1993e5db7426164444406682d0c61"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#ad3f1993e5db7426164444406682d0c61">ECP2_BLS381_copy</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *Q)</td></tr>
<tr class="memdesc:ad3f1993e5db7426164444406682d0c61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy ECP2 point to another ECP2 point. <a href="#ad3f1993e5db7426164444406682d0c61">More...</a><br /></td></tr>
<tr class="separator:ad3f1993e5db7426164444406682d0c61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a522906a3d016800143b3a2501a753c99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a522906a3d016800143b3a2501a753c99">ECP2_BLS381_inf</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:a522906a3d016800143b3a2501a753c99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set ECP2 to point-at-infinity. <a href="#a522906a3d016800143b3a2501a753c99">More...</a><br /></td></tr>
<tr class="separator:a522906a3d016800143b3a2501a753c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea45b0695afe03966bb22dddaaae6176"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#aea45b0695afe03966bb22dddaaae6176">ECP2_BLS381_equals</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *Q)</td></tr>
<tr class="memdesc:aea45b0695afe03966bb22dddaaae6176"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests for equality of two ECP2s. <a href="#aea45b0695afe03966bb22dddaaae6176">More...</a><br /></td></tr>
<tr class="separator:aea45b0695afe03966bb22dddaaae6176"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56267fe030680d3201f411e7111493d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a56267fe030680d3201f411e7111493d7">ECP2_BLS381_affine</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:a56267fe030680d3201f411e7111493d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts an ECP2 point from Projective (x,y,z) coordinates to affine (x,y) coordinates. <a href="#a56267fe030680d3201f411e7111493d7">More...</a><br /></td></tr>
<tr class="separator:a56267fe030680d3201f411e7111493d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38091f2eeb30632ecbd3813caff7df9e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a38091f2eeb30632ecbd3813caff7df9e">ECP2_BLS381_get</a> (<a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *x, <a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *y, <a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:a38091f2eeb30632ecbd3813caff7df9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extract x and y coordinates of an ECP2 point P. <a href="#a38091f2eeb30632ecbd3813caff7df9e">More...</a><br /></td></tr>
<tr class="separator:a38091f2eeb30632ecbd3813caff7df9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af722a098ce6831fbf999929870dd548f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#af722a098ce6831fbf999929870dd548f">ECP2_BLS381_output</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:af722a098ce6831fbf999929870dd548f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats and outputs an ECP2 point to the console, converted to affine coordinates. <a href="#af722a098ce6831fbf999929870dd548f">More...</a><br /></td></tr>
<tr class="separator:af722a098ce6831fbf999929870dd548f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5159dd59c2b3744cf04c1d086a0d9ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#ad5159dd59c2b3744cf04c1d086a0d9ab">ECP2_BLS381_outputxyz</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:ad5159dd59c2b3744cf04c1d086a0d9ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats and outputs an ECP2 point to the console, in projective coordinates. <a href="#ad5159dd59c2b3744cf04c1d086a0d9ab">More...</a><br /></td></tr>
<tr class="separator:ad5159dd59c2b3744cf04c1d086a0d9ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d91bc6967f5690ee224ed7959c1216f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a0d91bc6967f5690ee224ed7959c1216f">ECP2_BLS381_toOctet</a> (<a class="el" href="structoctet.html">octet</a> *S, <a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:a0d91bc6967f5690ee224ed7959c1216f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats and outputs an ECP2 point to an octet string. <a href="#a0d91bc6967f5690ee224ed7959c1216f">More...</a><br /></td></tr>
<tr class="separator:a0d91bc6967f5690ee224ed7959c1216f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe582b085f5c69960213da026064816c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#abe582b085f5c69960213da026064816c">ECP2_BLS381_fromOctet</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structoctet.html">octet</a> *S)</td></tr>
<tr class="memdesc:abe582b085f5c69960213da026064816c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an ECP2 point from an octet string. <a href="#abe582b085f5c69960213da026064816c">More...</a><br /></td></tr>
<tr class="separator:abe582b085f5c69960213da026064816c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e25883a298d369d138992d9c539d324"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a3e25883a298d369d138992d9c539d324">ECP2_BLS381_rhs</a> (<a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *r, <a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *x)</td></tr>
<tr class="memdesc:a3e25883a298d369d138992d9c539d324"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate Right Hand Side of curve equation y^2=f(x) <a href="#a3e25883a298d369d138992d9c539d324">More...</a><br /></td></tr>
<tr class="separator:a3e25883a298d369d138992d9c539d324"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaf387b0d44d6132252b204bbd0599a8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#abaf387b0d44d6132252b204bbd0599a8">ECP2_BLS381_set</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *x, <a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *y)</td></tr>
<tr class="memdesc:abaf387b0d44d6132252b204bbd0599a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set ECP2 to point(x,y) given x and y. <a href="#abaf387b0d44d6132252b204bbd0599a8">More...</a><br /></td></tr>
<tr class="separator:abaf387b0d44d6132252b204bbd0599a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38b5fb3b588c7b5b47c0b0535c5a1d08"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a38b5fb3b588c7b5b47c0b0535c5a1d08">ECP2_BLS381_setx</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *x)</td></tr>
<tr class="memdesc:a38b5fb3b588c7b5b47c0b0535c5a1d08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set ECP to point(x,[y]) given x. <a href="#a38b5fb3b588c7b5b47c0b0535c5a1d08">More...</a><br /></td></tr>
<tr class="separator:a38b5fb3b588c7b5b47c0b0535c5a1d08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78c4f7d1e2efcc015386aaa52fc49e4d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a78c4f7d1e2efcc015386aaa52fc49e4d">ECP2_BLS381_neg</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:a78c4f7d1e2efcc015386aaa52fc49e4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Negation of an ECP2 point. <a href="#a78c4f7d1e2efcc015386aaa52fc49e4d">More...</a><br /></td></tr>
<tr class="separator:a78c4f7d1e2efcc015386aaa52fc49e4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8767288711365883432ac2d9a5cb6af0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a8767288711365883432ac2d9a5cb6af0">ECP2_BLS381_dbl</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P)</td></tr>
<tr class="memdesc:a8767288711365883432ac2d9a5cb6af0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Doubles an ECP2 instance P. <a href="#a8767288711365883432ac2d9a5cb6af0">More...</a><br /></td></tr>
<tr class="separator:a8767288711365883432ac2d9a5cb6af0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4939a57920bc1af14ea89ba784e7a126"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a4939a57920bc1af14ea89ba784e7a126">ECP2_BLS381_add</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *Q)</td></tr>
<tr class="memdesc:a4939a57920bc1af14ea89ba784e7a126"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds ECP2 instance Q to ECP2 instance P. <a href="#a4939a57920bc1af14ea89ba784e7a126">More...</a><br /></td></tr>
<tr class="separator:a4939a57920bc1af14ea89ba784e7a126"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a432ef0bb3613a8e0049a105f87e16e48"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a432ef0bb3613a8e0049a105f87e16e48">ECP2_BLS381_sub</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *Q)</td></tr>
<tr class="memdesc:a432ef0bb3613a8e0049a105f87e16e48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts ECP instance Q from ECP2 instance P. <a href="#a432ef0bb3613a8e0049a105f87e16e48">More...</a><br /></td></tr>
<tr class="separator:a432ef0bb3613a8e0049a105f87e16e48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3ae50bdca827a70f1c36b7a77be6bd2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#ae3ae50bdca827a70f1c36b7a77be6bd2">ECP2_BLS381_mul</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> b)</td></tr>
<tr class="memdesc:ae3ae50bdca827a70f1c36b7a77be6bd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiplies an ECP2 instance P by a BIG, side-channel resistant. <a href="#ae3ae50bdca827a70f1c36b7a77be6bd2">More...</a><br /></td></tr>
<tr class="separator:ae3ae50bdca827a70f1c36b7a77be6bd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a624221d2365056ca9394a8d9cd8fd6b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a624221d2365056ca9394a8d9cd8fd6b5">ECP2_BLS381_frob</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *f)</td></tr>
<tr class="memdesc:a624221d2365056ca9394a8d9cd8fd6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiplies an ECP2 instance P by the internal modulus p, using precalculated Frobenius constant f. <a href="#a624221d2365056ca9394a8d9cd8fd6b5">More...</a><br /></td></tr>
<tr class="separator:a624221d2365056ca9394a8d9cd8fd6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76371fcdc4cc04393d67b740a44a90cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a76371fcdc4cc04393d67b740a44a90cd">ECP2_BLS381_mul4</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *Q, <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> *b)</td></tr>
<tr class="memdesc:a76371fcdc4cc04393d67b740a44a90cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates P=b[0]*Q[0]+b[1]*Q[1]+b[2]*Q[2]+b[3]*Q[3]. <a href="#a76371fcdc4cc04393d67b740a44a90cd">More...</a><br /></td></tr>
<tr class="separator:a76371fcdc4cc04393d67b740a44a90cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb7753e333275c09ffd4755c80cf78ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#aeb7753e333275c09ffd4755c80cf78ca">ECP2_BLS381_mapit</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *P, <a class="el" href="structoctet.html">octet</a> *w)</td></tr>
<tr class="memdesc:aeb7753e333275c09ffd4755c80cf78ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps random BIG to curve point of correct order. <a href="#aeb7753e333275c09ffd4755c80cf78ca">More...</a><br /></td></tr>
<tr class="separator:aeb7753e333275c09ffd4755c80cf78ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1187e5720d09ad969800e9a50cc477e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#ac1187e5720d09ad969800e9a50cc477e">ECP2_BLS381_generator</a> (<a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *G)</td></tr>
<tr class="memdesc:ac1187e5720d09ad969800e9a50cc477e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Group Generator from ROM. <a href="#ac1187e5720d09ad969800e9a50cc477e">More...</a><br /></td></tr>
<tr class="separator:ac1187e5720d09ad969800e9a50cc477e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a8e691e13173dea68aa5c3f550e0fb130"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a8e691e13173dea68aa5c3f550e0fb130">CURVE_A_BLS381</a></td></tr>
<tr class="separator:a8e691e13173dea68aa5c3f550e0fb130"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef116dd1c5955c3e86fd9b22c39e3841"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#aef116dd1c5955c3e86fd9b22c39e3841">CURVE_B_I_BLS381</a></td></tr>
<tr class="separator:aef116dd1c5955c3e86fd9b22c39e3841"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cd99de9ded2845d418ca1c79fb95417"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a6cd99de9ded2845d418ca1c79fb95417">CURVE_B_BLS381</a></td></tr>
<tr class="separator:a6cd99de9ded2845d418ca1c79fb95417"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0db0beafd90432eb12fb013f5466d68"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#ab0db0beafd90432eb12fb013f5466d68">CURVE_Order_BLS381</a></td></tr>
<tr class="separator:ab0db0beafd90432eb12fb013f5466d68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97ea26d6174e376a165ff28ea07cc2e6"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a97ea26d6174e376a165ff28ea07cc2e6">CURVE_Cof_BLS381</a></td></tr>
<tr class="separator:a97ea26d6174e376a165ff28ea07cc2e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6e182a64e658ae2f24b4ce059dc1a7c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#ae6e182a64e658ae2f24b4ce059dc1a7c">CURVE_Bnx_BLS381</a></td></tr>
<tr class="separator:ae6e182a64e658ae2f24b4ce059dc1a7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1214b4014ddfebcc990efe1f496d0698"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a1214b4014ddfebcc990efe1f496d0698">Fra_BLS381</a></td></tr>
<tr class="separator:a1214b4014ddfebcc990efe1f496d0698"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80db75c3cbe43f3353897b39d21e4f34"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a80db75c3cbe43f3353897b39d21e4f34">Frb_BLS381</a></td></tr>
<tr class="separator:a80db75c3cbe43f3353897b39d21e4f34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a7bbe17c22d85afe7ec7fe1a08aab4d"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a4a7bbe17c22d85afe7ec7fe1a08aab4d">CURVE_Gx_BLS381</a></td></tr>
<tr class="separator:a4a7bbe17c22d85afe7ec7fe1a08aab4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ff01e0d2b4a0f06e9a8ac6c8346687c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a0ff01e0d2b4a0f06e9a8ac6c8346687c">CURVE_Gy_BLS381</a></td></tr>
<tr class="separator:a0ff01e0d2b4a0f06e9a8ac6c8346687c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d14c89595a7ed214cd12c0148688d2c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a6d14c89595a7ed214cd12c0148688d2c">CURVE_Pxa_BLS381</a></td></tr>
<tr class="separator:a6d14c89595a7ed214cd12c0148688d2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3b577d06eb5c4ac47dea6f19de11e1f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#aa3b577d06eb5c4ac47dea6f19de11e1f">CURVE_Pxb_BLS381</a></td></tr>
<tr class="separator:aa3b577d06eb5c4ac47dea6f19de11e1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a958833196ced4525eef425ae31c17931"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a958833196ced4525eef425ae31c17931">CURVE_Pya_BLS381</a></td></tr>
<tr class="separator:a958833196ced4525eef425ae31c17931"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a035ac94764dc5dd600c2d57e599456d0"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ecp2__BLS381_8h.html#a035ac94764dc5dd600c2d57e599456d0">CURVE_Pyb_BLS381</a></td></tr>
<tr class="separator:a035ac94764dc5dd600c2d57e599456d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Mike Scott </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a4939a57920bc1af14ea89ba784e7a126"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4939a57920bc1af14ea89ba784e7a126">&#9670;&nbsp;</a></span>ECP2_BLS381_add()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_add </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>Q</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit =P+Q </td></tr>
<tr><td class="paramname">Q</td><td>ECP2 instance to be added to P </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a56267fe030680d3201f411e7111493d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56267fe030680d3201f411e7111493d7">&#9670;&nbsp;</a></span>ECP2_BLS381_affine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_affine </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance to be converted to affine form </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad3f1993e5db7426164444406682d0c61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3f1993e5db7426164444406682d0c61">&#9670;&nbsp;</a></span>ECP2_BLS381_copy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_copy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>Q</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit = Q </td></tr>
<tr><td class="paramname">Q</td><td>ECP2 instance to be copied </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8767288711365883432ac2d9a5cb6af0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8767288711365883432ac2d9a5cb6af0">&#9670;&nbsp;</a></span>ECP2_BLS381_dbl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_dbl </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit =2*P </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aea45b0695afe03966bb22dddaaae6176"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea45b0695afe03966bb22dddaaae6176">&#9670;&nbsp;</a></span>ECP2_BLS381_equals()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_equals </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>Q</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance to be compared </td></tr>
<tr><td class="paramname">Q</td><td>ECP2 instance to be compared </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if P=Q, else returns 0 </dd></dl>
</div>
</div>
<a id="a624221d2365056ca9394a8d9cd8fd6b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a624221d2365056ca9394a8d9cd8fd6b5">&#9670;&nbsp;</a></span>ECP2_BLS381_frob()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_frob </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>f</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fast point multiplication using Frobenius </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit = p*P </td></tr>
<tr><td class="paramname">f</td><td>FP2 precalculated Frobenius constant </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abe582b085f5c69960213da026064816c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe582b085f5c69960213da026064816c">&#9670;&nbsp;</a></span>ECP2_BLS381_fromOctet()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_fromOctet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structoctet.html">octet</a> *&#160;</td>
<td class="paramname"><em>S</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The octet string is in the form x|y The real and imaginary parts of the x and y coordinates are in big-endian base 256 form. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance to be created from the octet string </td></tr>
<tr><td class="paramname">S</td><td>input octet string return 1 if octet string corresponds to a point on the curve, else 0 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac1187e5720d09ad969800e9a50cc477e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac1187e5720d09ad969800e9a50cc477e">&#9670;&nbsp;</a></span>ECP2_BLS381_generator()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_generator </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>G</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">G</td><td>ECP2 instance </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a38091f2eeb30632ecbd3813caff7df9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38091f2eeb30632ecbd3813caff7df9e">&#9670;&nbsp;</a></span>ECP2_BLS381_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>If x=y, returns only x </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x</td><td>FP2 on exit = x coordinate of point </td></tr>
<tr><td class="paramname">y</td><td>FP2 on exit = y coordinate of point (unless x=y) </td></tr>
<tr><td class="paramname">P</td><td>ECP2 instance (x,y) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>-1 if P is point-at-infinity, else 0 </dd></dl>
</div>
</div>
<a id="a522906a3d016800143b3a2501a753c99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a522906a3d016800143b3a2501a753c99">&#9670;&nbsp;</a></span>ECP2_BLS381_inf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_inf </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance to be set to infinity </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4a28bbafc3034b9d0398c70326b24acf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a28bbafc3034b9d0398c70326b24acf">&#9670;&nbsp;</a></span>ECP2_BLS381_isinf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_isinf </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 point to be tested </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if infinity, else returns 0 </dd></dl>
</div>
</div>
<a id="aeb7753e333275c09ffd4755c80cf78ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb7753e333275c09ffd4755c80cf78ca">&#9670;&nbsp;</a></span>ECP2_BLS381_mapit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_mapit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structoctet.html">octet</a> *&#160;</td>
<td class="paramname"><em>w</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance of correct order </td></tr>
<tr><td class="paramname">w</td><td>OCTET byte array to be mapped </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae3ae50bdca827a70f1c36b7a77be6bd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3ae50bdca827a70f1c36b7a77be6bd2">&#9670;&nbsp;</a></span>ECP2_BLS381_mul()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_mul </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a>&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Uses fixed sized windows. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit =b*P </td></tr>
<tr><td class="paramname">b</td><td>BIG number multiplier </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a76371fcdc4cc04393d67b740a44a90cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76371fcdc4cc04393d67b740a44a90cd">&#9670;&nbsp;</a></span>ECP2_BLS381_mul4()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_mul4 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>Q</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> *&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit = b[0]*Q[0]+b[1]*Q[1]+b[2]*Q[2]+b[3]*Q[3] </td></tr>
<tr><td class="paramname">Q</td><td>ECP2 array of 4 points </td></tr>
<tr><td class="paramname">b</td><td>BIG array of 4 multipliers </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a78c4f7d1e2efcc015386aaa52fc49e4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78c4f7d1e2efcc015386aaa52fc49e4d">&#9670;&nbsp;</a></span>ECP2_BLS381_neg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_neg </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit = -P </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af722a098ce6831fbf999929870dd548f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af722a098ce6831fbf999929870dd548f">&#9670;&nbsp;</a></span>ECP2_BLS381_output()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_output </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance to be printed </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad5159dd59c2b3744cf04c1d086a0d9ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5159dd59c2b3744cf04c1d086a0d9ab">&#9670;&nbsp;</a></span>ECP2_BLS381_outputxyz()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_outputxyz </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance to be printed </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3e25883a298d369d138992d9c539d324"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e25883a298d369d138992d9c539d324">&#9670;&nbsp;</a></span>ECP2_BLS381_rhs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_rhs </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>r</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>x</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Function f(x)=x^3+Ax+B Used internally. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">r</td><td>FP2 value of f(x) </td></tr>
<tr><td class="paramname">x</td><td>FP2 instance </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abaf387b0d44d6132252b204bbd0599a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abaf387b0d44d6132252b204bbd0599a8">&#9670;&nbsp;</a></span>ECP2_BLS381_set()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_set </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Point P set to infinity if no such point on the curve. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance to be set (x,y) </td></tr>
<tr><td class="paramname">x</td><td>FP2 x coordinate of point </td></tr>
<tr><td class="paramname">y</td><td>FP2 y coordinate of point </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if point exists, else 0 </dd></dl>
</div>
</div>
<a id="a38b5fb3b588c7b5b47c0b0535c5a1d08"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38b5fb3b588c7b5b47c0b0535c5a1d08">&#9670;&nbsp;</a></span>ECP2_BLS381_setx()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ECP2_BLS381_setx </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFP2__BLS381.html">FP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>x</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Point P set to infinity if no such point on the curve. Otherwise y coordinate is calculated from x. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP instance to be set (x,[y]) </td></tr>
<tr><td class="paramname">x</td><td>BIG x coordinate of point </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if point exists, else 0 </dd></dl>
</div>
</div>
<a id="a432ef0bb3613a8e0049a105f87e16e48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a432ef0bb3613a8e0049a105f87e16e48">&#9670;&nbsp;</a></span>ECP2_BLS381_sub()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_sub </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>Q</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">P</td><td>ECP2 instance, on exit =P-Q </td></tr>
<tr><td class="paramname">Q</td><td>ECP2 instance to be subtracted from P </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0d91bc6967f5690ee224ed7959c1216f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d91bc6967f5690ee224ed7959c1216f">&#9670;&nbsp;</a></span>ECP2_BLS381_toOctet()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ECP2_BLS381_toOctet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structoctet.html">octet</a> *&#160;</td>
<td class="paramname"><em>S</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structECP2__BLS381.html">ECP2_BLS381</a> *&#160;</td>
<td class="paramname"><em>P</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The octet string is created in the form x|y. Convert the real and imaginary parts of the x and y coordinates to big-endian base 256 form. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">S</td><td>output octet string </td></tr>
<tr><td class="paramname">P</td><td>ECP2 instance to be converted to an octet string </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a8e691e13173dea68aa5c3f550e0fb130"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e691e13173dea68aa5c3f550e0fb130">&#9670;&nbsp;</a></span>CURVE_A_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int CURVE_A_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>Elliptic curve A parameter </p>
</div>
</div>
<a id="a6cd99de9ded2845d418ca1c79fb95417"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6cd99de9ded2845d418ca1c79fb95417">&#9670;&nbsp;</a></span>CURVE_B_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_B_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>Elliptic curve B parameter </p>
</div>
</div>
<a id="aef116dd1c5955c3e86fd9b22c39e3841"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef116dd1c5955c3e86fd9b22c39e3841">&#9670;&nbsp;</a></span>CURVE_B_I_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int CURVE_B_I_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>Elliptic curve B parameter </p>
</div>
</div>
<a id="ae6e182a64e658ae2f24b4ce059dc1a7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6e182a64e658ae2f24b4ce059dc1a7c">&#9670;&nbsp;</a></span>CURVE_Bnx_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Bnx_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>Elliptic curve parameter </p>
</div>
</div>
<a id="a97ea26d6174e376a165ff28ea07cc2e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97ea26d6174e376a165ff28ea07cc2e6">&#9670;&nbsp;</a></span>CURVE_Cof_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Cof_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>Elliptic curve cofactor </p>
</div>
</div>
<a id="a4a7bbe17c22d85afe7ec7fe1a08aab4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a7bbe17c22d85afe7ec7fe1a08aab4d">&#9670;&nbsp;</a></span>CURVE_Gx_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Gx_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>x-coordinate of generator point in group G1 </p>
</div>
</div>
<a id="a0ff01e0d2b4a0f06e9a8ac6c8346687c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ff01e0d2b4a0f06e9a8ac6c8346687c">&#9670;&nbsp;</a></span>CURVE_Gy_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Gy_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>y-coordinate of generator point in group G1 </p>
</div>
</div>
<a id="ab0db0beafd90432eb12fb013f5466d68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0db0beafd90432eb12fb013f5466d68">&#9670;&nbsp;</a></span>CURVE_Order_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Order_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>Elliptic curve group order </p>
</div>
</div>
<a id="a6d14c89595a7ed214cd12c0148688d2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d14c89595a7ed214cd12c0148688d2c">&#9670;&nbsp;</a></span>CURVE_Pxa_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Pxa_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>real part of x-coordinate of generator point in group G2 </p>
</div>
</div>
<a id="aa3b577d06eb5c4ac47dea6f19de11e1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3b577d06eb5c4ac47dea6f19de11e1f">&#9670;&nbsp;</a></span>CURVE_Pxb_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Pxb_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>imaginary part of x-coordinate of generator point in group G2 </p>
</div>
</div>
<a id="a958833196ced4525eef425ae31c17931"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a958833196ced4525eef425ae31c17931">&#9670;&nbsp;</a></span>CURVE_Pya_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Pya_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>real part of y-coordinate of generator point in group G2 </p>
</div>
</div>
<a id="a035ac94764dc5dd600c2d57e599456d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a035ac94764dc5dd600c2d57e599456d0">&#9670;&nbsp;</a></span>CURVE_Pyb_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> CURVE_Pyb_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>imaginary part of y-coordinate of generator point in group G2 </p>
</div>
</div>
<a id="a1214b4014ddfebcc990efe1f496d0698"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1214b4014ddfebcc990efe1f496d0698">&#9670;&nbsp;</a></span>Fra_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> Fra_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>real part of BN curve Frobenius Constant </p>
</div>
</div>
<a id="a80db75c3cbe43f3353897b39d21e4f34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80db75c3cbe43f3353897b39d21e4f34">&#9670;&nbsp;</a></span>Frb_BLS381</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="big__384__58_8h.html#ab8c68dbf8612f8f005c402a289c5da31">BIG_384_58</a> Frb_BLS381</td>
</tr>
</table>
</div><div class="memdoc">
<p>imaginary part of BN curve Frobenius Constant </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</body>
</html>