mirror of
https://github.com/seigler/dash-docs
synced 2025-07-27 17:56:16 +00:00
743 lines
41 KiB
HTML
743 lines
41 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.14"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>Dash Core: src/secp256k1/src/ecmult_impl.h File Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(initResizable);
|
|
/* @license-end */</script>
|
|
<link href="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="projectlogo"><img alt="Logo" src="bitcoin_logo_doxygen.png"/></td>
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">Dash Core
|
|
 <span id="projectnumber">0.12.2.1</span>
|
|
</div>
|
|
<div id="projectbrief">P2P Digital Currency</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.14 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&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&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>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(function(){initNavTree('ecmult__impl_8h.html','');});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- 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 class="header">
|
|
<div class="summary">
|
|
<a href="#define-members">Macros</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">ecmult_impl.h File Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><code>#include "<a class="el" href="group_8h_source.html">group.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="scalar_8h_source.html">scalar.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="ecmult_8h_source.html">ecmult.h</a>"</code><br />
|
|
</div>
|
|
<p><a href="ecmult__impl_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="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:a6216c81c6adbb8796c55fe0c8d3b6718"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a6216c81c6adbb8796c55fe0c8d3b6718">WINDOW_A</a>   5</td></tr>
|
|
<tr class="separator:a6216c81c6adbb8796c55fe0c8d3b6718"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afe951ac62b5b06848cb4e6f4dbc69616"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#afe951ac62b5b06848cb4e6f4dbc69616">WINDOW_G</a>   16</td></tr>
|
|
<tr class="separator:afe951ac62b5b06848cb4e6f4dbc69616"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a97c6c6e5aa98f202eec77c4c931e02f1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a97c6c6e5aa98f202eec77c4c931e02f1">ECMULT_TABLE_SIZE</a>(w)   (1 << ((w)-2))</td></tr>
|
|
<tr class="separator:a97c6c6e5aa98f202eec77c4c931e02f1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afe9218069a15709b99aacd7af0ba2636"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#afe9218069a15709b99aacd7af0ba2636">ECMULT_TABLE_GET_GE</a>(r, pre, n, w)</td></tr>
|
|
<tr class="separator:afe9218069a15709b99aacd7af0ba2636"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a45d4a36e1a06a0214837d20789239f8b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a45d4a36e1a06a0214837d20789239f8b">ECMULT_TABLE_GET_GE_STORAGE</a>(r, pre, n, w)</td></tr>
|
|
<tr class="separator:a45d4a36e1a06a0214837d20789239f8b"><td class="memSeparator" colspan="2"> </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:a5008191228d03c7325ea86aa8baaf4dc"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a5008191228d03c7325ea86aa8baaf4dc">secp256k1_ecmult_odd_multiples_table</a> (int n, <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> *prej, <a class="el" href="structsecp256k1__fe.html">secp256k1_fe</a> *zr, const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> *a)</td></tr>
|
|
<tr class="separator:a5008191228d03c7325ea86aa8baaf4dc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a33fe27d5aa383017999f80a1cdd8d8ca"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a33fe27d5aa383017999f80a1cdd8d8ca">secp256k1_ecmult_odd_multiples_table_globalz_windowa</a> (<a class="el" href="structsecp256k1__ge.html">secp256k1_ge</a> *pre, <a class="el" href="structsecp256k1__fe.html">secp256k1_fe</a> *globalz, const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> *a)</td></tr>
|
|
<tr class="separator:a33fe27d5aa383017999f80a1cdd8d8ca"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a72a05df0626a92692be8ca5e68c19a56"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a72a05df0626a92692be8ca5e68c19a56">secp256k1_ecmult_odd_multiples_table_storage_var</a> (int n, <a class="el" href="structsecp256k1__ge__storage.html">secp256k1_ge_storage</a> *pre, const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> *a, const <a class="el" href="structsecp256k1__callback.html">secp256k1_callback</a> *cb)</td></tr>
|
|
<tr class="separator:a72a05df0626a92692be8ca5e68c19a56"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3d2b8a81ffed27e7eca0058eb65831b5"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a3d2b8a81ffed27e7eca0058eb65831b5">secp256k1_ecmult_context_init</a> (<a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> *<a class="el" href="tests_8c.html#a06a3e29ada83211a695a49e8f7405842">ctx</a>)</td></tr>
|
|
<tr class="separator:a3d2b8a81ffed27e7eca0058eb65831b5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:acc2494f319c79f6cc15982f43e7a6f00"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#acc2494f319c79f6cc15982f43e7a6f00">secp256k1_ecmult_context_build</a> (<a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> *<a class="el" href="tests_8c.html#a06a3e29ada83211a695a49e8f7405842">ctx</a>, const <a class="el" href="structsecp256k1__callback.html">secp256k1_callback</a> *cb)</td></tr>
|
|
<tr class="separator:acc2494f319c79f6cc15982f43e7a6f00"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a95a3e0c69a07d94a248cdb06328966f6"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a95a3e0c69a07d94a248cdb06328966f6">secp256k1_ecmult_context_clone</a> (<a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> *dst, const <a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> *src, const <a class="el" href="structsecp256k1__callback.html">secp256k1_callback</a> *cb)</td></tr>
|
|
<tr class="separator:a95a3e0c69a07d94a248cdb06328966f6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa4f6f213989d3ec35850c40c8f1b313b"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#aa4f6f213989d3ec35850c40c8f1b313b">secp256k1_ecmult_context_is_built</a> (const <a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> *<a class="el" href="tests_8c.html#a06a3e29ada83211a695a49e8f7405842">ctx</a>)</td></tr>
|
|
<tr class="separator:aa4f6f213989d3ec35850c40c8f1b313b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0e60dbc86c237360d13ac9433caa13af"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a0e60dbc86c237360d13ac9433caa13af">secp256k1_ecmult_context_clear</a> (<a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> *<a class="el" href="tests_8c.html#a06a3e29ada83211a695a49e8f7405842">ctx</a>)</td></tr>
|
|
<tr class="separator:a0e60dbc86c237360d13ac9433caa13af"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a48a8b6bbead18d4475c8a29d28376c5b"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#a48a8b6bbead18d4475c8a29d28376c5b">secp256k1_ecmult_wnaf</a> (int *wnaf, int len, const <a class="el" href="structsecp256k1__scalar.html">secp256k1_scalar</a> *a, int w)</td></tr>
|
|
<tr class="separator:a48a8b6bbead18d4475c8a29d28376c5b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aacf8b6ba48671daf24d549adb176366c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecmult__impl_8h.html#aacf8b6ba48671daf24d549adb176366c">secp256k1_ecmult</a> (const <a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> *<a class="el" href="tests_8c.html#a06a3e29ada83211a695a49e8f7405842">ctx</a>, <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> *r, const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> *a, const <a class="el" href="structsecp256k1__scalar.html">secp256k1_scalar</a> *na, const <a class="el" href="structsecp256k1__scalar.html">secp256k1_scalar</a> *ng)</td></tr>
|
|
<tr class="separator:aacf8b6ba48671daf24d549adb176366c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a id="afe9218069a15709b99aacd7af0ba2636"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afe9218069a15709b99aacd7af0ba2636">◆ </a></span>ECMULT_TABLE_GET_GE</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define ECMULT_TABLE_GET_GE</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">r, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">pre, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">n, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">w </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line"> VERIFY_CHECK(((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) & 1) == 1); \</div><div class="line"> VERIFY_CHECK((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) >= -((1 << ((w)-1)) - 1)); \</div><div class="line"> VERIFY_CHECK((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) <= ((1 << ((w)-1)) - 1)); \</div><div class="line"> if ((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) > 0) { \</div><div class="line"> *(r) = (pre)[((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>)-1)/2]; \</div><div class="line"> } <span class="keywordflow">else</span> { \</div><div class="line"> secp256k1_ge_neg((r), &(pre)[(-(<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>)-1)/2]); \</div><div class="line"> } \</div><div class="line">} <span class="keywordflow">while</span>(0)</div><div class="ttc" id="namespacefix-copyright-headers_html_aed10e06fbf20b2e50f73ff2d61f59e45"><div class="ttname"><a href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">fix-copyright-headers.n</a></div><div class="ttdeci">int n</div><div class="ttdef"><b>Definition:</b> <a href="fix-copyright-headers_8py_source.html#l00046">fix-copyright-headers.py:46</a></div></div>
|
|
</div><!-- fragment --><p>The following two macro retrieves a particular odd multiple from a table of precomputed multiples. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00117">117</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00269">secp256k1_ecmult()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a45d4a36e1a06a0214837d20789239f8b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a45d4a36e1a06a0214837d20789239f8b">◆ </a></span>ECMULT_TABLE_GET_GE_STORAGE</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define ECMULT_TABLE_GET_GE_STORAGE</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">r, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">pre, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">n, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">w </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line"> VERIFY_CHECK(((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) & 1) == 1); \</div><div class="line"> VERIFY_CHECK((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) >= -((1 << ((w)-1)) - 1)); \</div><div class="line"> VERIFY_CHECK((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) <= ((1 << ((w)-1)) - 1)); \</div><div class="line"> if ((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>) > 0) { \</div><div class="line"> secp256k1_ge_from_storage((r), &(pre)[((<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>)-1)/2]); \</div><div class="line"> } <span class="keywordflow">else</span> { \</div><div class="line"> secp256k1_ge_from_storage((r), &(pre)[(-(<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>)-1)/2]); \</div><div class="line"> secp256k1_ge_neg((r), (r)); \</div><div class="line"> } \</div><div class="line">} <span class="keywordflow">while</span>(0)</div><div class="ttc" id="namespacefix-copyright-headers_html_aed10e06fbf20b2e50f73ff2d61f59e45"><div class="ttname"><a href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">fix-copyright-headers.n</a></div><div class="ttdeci">int n</div><div class="ttdef"><b>Definition:</b> <a href="fix-copyright-headers_8py_source.html#l00046">fix-copyright-headers.py:46</a></div></div>
|
|
</div><!-- fragment -->
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00128">128</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00269">secp256k1_ecmult()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a97c6c6e5aa98f202eec77c4c931e02f1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a97c6c6e5aa98f202eec77c4c931e02f1">◆ </a></span>ECMULT_TABLE_SIZE</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define ECMULT_TABLE_SIZE</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">w</td><td>)</td>
|
|
<td>   (1 << ((w)-2))</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>The number of entries a table with precomputed multiples needs to have. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00028">28</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00269">secp256k1_ecmult()</a>, <a class="el" href="ecmult__const__impl_8h_source.html#l00125">secp256k1_ecmult_const()</a>, <a class="el" href="ecmult__impl_8h_source.html#l00147">secp256k1_ecmult_context_build()</a>, <a class="el" href="ecmult__impl_8h_source.html#l00179">secp256k1_ecmult_context_clone()</a>, and <a class="el" href="ecmult__impl_8h_source.html#l00085">secp256k1_ecmult_odd_multiples_table_globalz_windowa()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6216c81c6adbb8796c55fe0c8d3b6718"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6216c81c6adbb8796c55fe0c8d3b6718">◆ </a></span>WINDOW_A</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define WINDOW_A   5</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00015">15</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="bench__internal_8c_source.html#l00230">bench_ecmult_wnaf()</a>, <a class="el" href="bench__internal_8c_source.html#l00240">bench_wnaf_const()</a>, <a class="el" href="ecmult__impl_8h_source.html#l00269">secp256k1_ecmult()</a>, <a class="el" href="ecmult__const__impl_8h_source.html#l00125">secp256k1_ecmult_const()</a>, and <a class="el" href="ecmult__impl_8h_source.html#l00085">secp256k1_ecmult_odd_multiples_table_globalz_windowa()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="afe951ac62b5b06848cb4e6f4dbc69616"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afe951ac62b5b06848cb4e6f4dbc69616">◆ </a></span>WINDOW_G</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define WINDOW_G   16</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>larger numbers may result in slightly better performance, at the cost of exponentially larger precomputed tables. One table for window size 16: 1.375 MiB. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00024">24</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00269">secp256k1_ecmult()</a>, <a class="el" href="ecmult__impl_8h_source.html#l00147">secp256k1_ecmult_context_build()</a>, and <a class="el" href="ecmult__impl_8h_source.html#l00179">secp256k1_ecmult_context_clone()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="aacf8b6ba48671daf24d549adb176366c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aacf8b6ba48671daf24d549adb176366c">◆ </a></span>secp256k1_ecmult()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> * </td>
|
|
<td class="paramname"><em>ctx</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> * </td>
|
|
<td class="paramname"><em>r</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> * </td>
|
|
<td class="paramname"><em>a</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__scalar.html">secp256k1_scalar</a> * </td>
|
|
<td class="paramname"><em>na</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__scalar.html">secp256k1_scalar</a> * </td>
|
|
<td class="paramname"><em>ng</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00269">269</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="acc2494f319c79f6cc15982f43e7a6f00"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#acc2494f319c79f6cc15982f43e7a6f00">◆ </a></span>secp256k1_ecmult_context_build()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult_context_build </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> * </td>
|
|
<td class="paramname"><em>ctx</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__callback.html">secp256k1_callback</a> * </td>
|
|
<td class="paramname"><em>cb</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00147">147</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a0e60dbc86c237360d13ac9433caa13af"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0e60dbc86c237360d13ac9433caa13af">◆ </a></span>secp256k1_ecmult_context_clear()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult_context_clear </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> * </td>
|
|
<td class="paramname"><em>ctx</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00203">203</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a95a3e0c69a07d94a248cdb06328966f6"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a95a3e0c69a07d94a248cdb06328966f6">◆ </a></span>secp256k1_ecmult_context_clone()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult_context_clone </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> * </td>
|
|
<td class="paramname"><em>dst</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> * </td>
|
|
<td class="paramname"><em>src</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__callback.html">secp256k1_callback</a> * </td>
|
|
<td class="paramname"><em>cb</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00179">179</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a3d2b8a81ffed27e7eca0058eb65831b5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a3d2b8a81ffed27e7eca0058eb65831b5">◆ </a></span>secp256k1_ecmult_context_init()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult_context_init </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> * </td>
|
|
<td class="paramname"><em>ctx</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00140">140</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00203">secp256k1_ecmult_context_clear()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa4f6f213989d3ec35850c40c8f1b313b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa4f6f213989d3ec35850c40c8f1b313b">◆ </a></span>secp256k1_ecmult_context_is_built()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static int secp256k1_ecmult_context_is_built </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__ecmult__context.html">secp256k1_ecmult_context</a> * </td>
|
|
<td class="paramname"><em>ctx</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00199">199</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5008191228d03c7325ea86aa8baaf4dc"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5008191228d03c7325ea86aa8baaf4dc">◆ </a></span>secp256k1_ecmult_odd_multiples_table()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult_odd_multiples_table </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>n</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> * </td>
|
|
<td class="paramname"><em>prej</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__fe.html">secp256k1_fe</a> * </td>
|
|
<td class="paramname"><em>zr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> * </td>
|
|
<td class="paramname"><em>a</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Fill a table 'prej' with precomputed odd multiples of a. Prej will contain the values [1*a,3*a,...,(2*n-1)*a], so it space for n values. zr[0] will contain prej[0].z / a.z. The other zr[i] values = prej[i].z / prej[i-1].z. Prej's Z values are undefined, except for the last value. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00035">35</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00085">secp256k1_ecmult_odd_multiples_table_globalz_windowa()</a>, and <a class="el" href="ecmult__impl_8h_source.html#l00095">secp256k1_ecmult_odd_multiples_table_storage_var()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a33fe27d5aa383017999f80a1cdd8d8ca"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a33fe27d5aa383017999f80a1cdd8d8ca">◆ </a></span>secp256k1_ecmult_odd_multiples_table_globalz_windowa()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult_odd_multiples_table_globalz_windowa </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__ge.html">secp256k1_ge</a> * </td>
|
|
<td class="paramname"><em>pre</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__fe.html">secp256k1_fe</a> * </td>
|
|
<td class="paramname"><em>globalz</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> * </td>
|
|
<td class="paramname"><em>a</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Fill a table 'pre' with precomputed odd multiples of a.</p>
|
|
<p>There are two versions of this function:</p><ul>
|
|
<li>secp256k1_ecmult_odd_multiples_table_globalz_windowa which brings its resulting point set to a single constant Z denominator, stores the X and Y coordinates as ge_storage points in pre, and stores the global Z in rz. It only operates on tables sized for WINDOW_A wnaf multiples.</li>
|
|
<li>secp256k1_ecmult_odd_multiples_table_storage_var, which converts its resulting point set to actually affine points, and stores those in pre. It operates on tables of any size, but uses heap-allocated temporaries.</li>
|
|
</ul>
|
|
<p>To compute a*P + b*G, we compute a table for P using the first function, and for G using the second (which requires an inverse, but it only needs to happen once). </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00085">85</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00269">secp256k1_ecmult()</a>, and <a class="el" href="ecmult__const__impl_8h_source.html#l00125">secp256k1_ecmult_const()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a72a05df0626a92692be8ca5e68c19a56"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a72a05df0626a92692be8ca5e68c19a56">◆ </a></span>secp256k1_ecmult_odd_multiples_table_storage_var()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void secp256k1_ecmult_odd_multiples_table_storage_var </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>n</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="structsecp256k1__ge__storage.html">secp256k1_ge_storage</a> * </td>
|
|
<td class="paramname"><em>pre</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__gej.html">secp256k1_gej</a> * </td>
|
|
<td class="paramname"><em>a</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__callback.html">secp256k1_callback</a> * </td>
|
|
<td class="paramname"><em>cb</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00095">95</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="ecmult__impl_8h_source.html#l00147">secp256k1_ecmult_context_build()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a48a8b6bbead18d4475c8a29d28376c5b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a48a8b6bbead18d4475c8a29d28376c5b">◆ </a></span>secp256k1_ecmult_wnaf()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static int secp256k1_ecmult_wnaf </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int * </td>
|
|
<td class="paramname"><em>wnaf</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>len</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="structsecp256k1__scalar.html">secp256k1_scalar</a> * </td>
|
|
<td class="paramname"><em>a</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>w</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Convert a number to WNAF notation. The number becomes represented by sum(2^i * wnaf[i], i=0..bits), with the following guarantees:</p><ul>
|
|
<li>each wnaf[i] is either 0, or an odd integer between -(1<<(w-1) - 1) and (1<<(w-1) - 1)</li>
|
|
<li>two non-zero entries in wnaf are separated by at least w-1 zeroes.</li>
|
|
<li>the number of set values in wnaf is returned. This number is at most 256, and at most one more than the number of bits in the (absolute value) of the input. </li>
|
|
</ul>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="ecmult__impl_8h_source.html#l00218">218</a> of file <a class="el" href="ecmult__impl_8h_source.html">ecmult_impl.h</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="bench__internal_8c_source.html#l00230">bench_ecmult_wnaf()</a>, <a class="el" href="ecmult__impl_8h_source.html#l00269">secp256k1_ecmult()</a>, and <a class="el" href="tests_8c_source.html#l02333">test_wnaf()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_44f34d1e62fda08bdb4ca69ab2d205ae.html">secp256k1</a></li><li class="navelem"><a class="el" href="dir_8db2ef784512d48b2a7d00369dfaac28.html">src</a></li><li class="navelem"><a class="el" href="ecmult__impl_8h.html">ecmult_impl.h</a></li>
|
|
<li class="footer">Generated on Thu Dec 14 2017 13:15:11 for Dash Core by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|