blob: 9711c4078c62e6e34208e9ae0ca2d3609d590ceb [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.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libmpc: mta.h Source File</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>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.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">libmpc
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<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','.html');
/* @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_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_a166689341c37329f24f96bdba87a08b.html">amcl</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">mta.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="mta_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">Licensed to the Apache Software Foundation (ASF) under one</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">or more contributor license agreements. See the NOTICE file</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">distributed with this work for additional information</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">regarding copyright ownership. The ASF licenses this file</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">to you under the Apache License, Version 2.0 (the</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">&quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">with the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">Unless required by applicable law or agreed to in writing,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">software distributed under the License is distributed on an</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">&quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">KIND, either express or implied. See the License for the</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">specific language governing permissions and limitations</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">under the License.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifndef MTA_H</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#define MTA_H</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;amcl/amcl.h&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;amcl/paillier.h&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="commitments_8h.html">amcl/commitments.h</a>&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;amcl/ecp_SECP256K1.h&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;amcl/ecdh_SECP256K1.h&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="mta_8h.html#a38835fd15b3c165ca0acce5ba7f45dd6"> 39</a></span>&#160;<span class="preprocessor">#define MTA_OK 0 </span></div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="mta_8h.html#a9cffabde5e58757768c87f8b96bed9be"> 40</a></span>&#160;<span class="preprocessor">#define MTA_FAIL 61 </span></div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="mta_8h.html#ac83dee7822a61403334298331d63171c"> 41</a></span>&#160;<span class="preprocessor">#define MTA_INVALID_ECP 62 </span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/* MTA protocol API */</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="mta_8h.html#a7bbc83a1d90c466061839c88375576a3"> 55</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a7bbc83a1d90c466061839c88375576a3">MPC_MTA_CLIENT1</a>(csprng *RNG, PAILLIER_public_key* PUB, octet* A, octet* CA, octet* R);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="mta_8h.html#a673e46de79006b3d5e349a0eec6bd5c5"> 70</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a673e46de79006b3d5e349a0eec6bd5c5">MPC_MTA_CLIENT2</a>(PAILLIER_private_key *PRIV, octet* CB, octet *ALPHA);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="mta_8h.html#af6150f97b1d2df1d70ec419211d37592"> 92</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="mta_8h.html#af6150f97b1d2df1d70ec419211d37592">MPC_MTA_SERVER</a>(csprng *RNG, PAILLIER_public_key *PUB, octet *B, octet *CA, octet *Z, octet *R, octet *CB, octet *BETA);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="mta_8h.html#a585141482d0be764359316dc4aa9a345"> 108</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a585141482d0be764359316dc4aa9a345">MPC_SUM_MTA</a>(<span class="keyword">const</span> octet *A, <span class="keyword">const</span> octet *B, <span class="keyword">const</span> octet *ALPHA, <span class="keyword">const</span> octet *BETA, octet *SUM);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">/* MTA Zero Knowledge Proofs API*/</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// The protocols require a BC modulus (Pt, Qt, Nt, h1, h2) and a Paillier PK (N, g)</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="mta_8h.html#ae4971990b60c103d7cb596c9a0d1d205"> 128</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="mta_8h.html#ae4971990b60c103d7cb596c9a0d1d205">MTA_ZK_random_challenge</a>(csprng *RNG, octet *E);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">/* Range Proof API */</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment__rv.html"> 133</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;{</div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment__rv.html#aecbdb8eaf2ced92b569f664d53ee0517"> 135</a></span>&#160; BIG_1024_58 alpha[FFLEN_2048]; </div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment__rv.html#af6f441b304a8b2c8997860c2bbeaa6b1"> 136</a></span>&#160; BIG_1024_58 beta[FFLEN_2048]; </div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment__rv.html#adacad4216d4e48675f9e0e1c8af3a7b6"> 137</a></span>&#160; BIG_1024_58 gamma[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment__rv.html#a0ed6c0f9febc1b4cf7888de348296b46"> 138</a></span>&#160; BIG_1024_58 rho[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;} <a class="code" href="structMTA__RP__commitment__rv.html">MTA_RP_commitment_rv</a>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment.html"> 142</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment.html#aee20ad37a8cde2e2b6381055fff1c649"> 144</a></span>&#160; BIG_1024_58 z[FFLEN_2048]; </div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment.html#a201fa0a955e4cc4b8f0bfed810a58b77"> 145</a></span>&#160; BIG_512_60 u[FFLEN_4096]; </div>
<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="structMTA__RP__commitment.html#a19d9074f354d2362f090db5cd6f34212"> 146</a></span>&#160; BIG_1024_58 w[FFLEN_2048]; </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;} <a class="code" href="structMTA__RP__commitment.html">MTA_RP_commitment</a>;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="structMTA__RP__proof.html"> 150</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;{</div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="structMTA__RP__proof.html#a8040777a4b2f46d78a7f113e924b76d0"> 152</a></span>&#160; BIG_512_60 s[FFLEN_4096]; </div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="structMTA__RP__proof.html#aa0e204527ce83ab95daa7b6a9977e473"> 153</a></span>&#160; BIG_1024_58 s1[FFLEN_2048]; </div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="structMTA__RP__proof.html#a22e41915856f9e6c60fbde988a81870c"> 154</a></span>&#160; BIG_1024_58 s2[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;} <a class="code" href="structMTA__RP__proof.html">MTA_RP_proof</a>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="mta_8h.html#a9ae812a8b7fa69ae98d8eec9db51cc83"> 178</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a9ae812a8b7fa69ae98d8eec9db51cc83">MTA_RP_commit</a>(csprng *RNG, PAILLIER_private_key *key, <a class="code" href="structCOMMITMENTS__BC__pub__modulus.html">COMMITMENTS_BC_pub_modulus</a> *mod, octet *M, <a class="code" href="structMTA__RP__commitment.html">MTA_RP_commitment</a> *c, <a class="code" href="structMTA__RP__commitment__rv.html">MTA_RP_commitment_rv</a> *rv);</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="mta_8h.html#aae8035b9c2d5b29f3ad9df3c44466e1d"> 194</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#aae8035b9c2d5b29f3ad9df3c44466e1d">MTA_RP_challenge</a>(PAILLIER_public_key *key, <a class="code" href="structCOMMITMENTS__BC__pub__modulus.html">COMMITMENTS_BC_pub_modulus</a> *mod, <span class="keyword">const</span> octet *CT, <a class="code" href="structMTA__RP__commitment.html">MTA_RP_commitment</a> *c, octet *E);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="mta_8h.html#a840590c8db0b435bece74978adf0748d"> 213</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a840590c8db0b435bece74978adf0748d">MTA_RP_prove</a>(PAILLIER_private_key *key, <a class="code" href="structMTA__RP__commitment__rv.html">MTA_RP_commitment_rv</a> *rv, octet *M, octet *R, octet *E, <a class="code" href="structMTA__RP__proof.html">MTA_RP_proof</a> *p);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="mta_8h.html#aaa4c5afa267be00e1819becd53805795"> 233</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="mta_8h.html#aaa4c5afa267be00e1819becd53805795">MTA_RP_verify</a>(PAILLIER_public_key *key, <a class="code" href="structCOMMITMENTS__BC__priv__modulus.html">COMMITMENTS_BC_priv_modulus</a> *mod, octet *CT, octet *E, <a class="code" href="structMTA__RP__commitment.html">MTA_RP_commitment</a> *c, <a class="code" href="structMTA__RP__proof.html">MTA_RP_proof</a> *p);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="mta_8h.html#aa60c3b4a80719d29f0ebb747f3fc31a1"> 242</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#aa60c3b4a80719d29f0ebb747f3fc31a1">MTA_RP_commitment_toOctets</a>(octet *Z, octet *U, octet *W, <a class="code" href="structMTA__RP__commitment.html">MTA_RP_commitment</a> *c);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="mta_8h.html#a5f42fb5d017f34db268c112f7c8d056e"> 251</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a5f42fb5d017f34db268c112f7c8d056e">MTA_RP_commitment_fromOctets</a>(<a class="code" href="structMTA__RP__commitment.html">MTA_RP_commitment</a> *c, octet *Z, octet *U, octet *W);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="mta_8h.html#a4c516e4898f3fbcdd55ed70ea0e336ef"> 260</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a4c516e4898f3fbcdd55ed70ea0e336ef">MTA_RP_proof_toOctets</a>(octet *S, octet *S1, octet *S2, <a class="code" href="structMTA__RP__proof.html">MTA_RP_proof</a> *p);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="mta_8h.html#ad60da72de670c62131bc57f9e1070c84"> 269</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#ad60da72de670c62131bc57f9e1070c84">MTA_RP_proof_fromOctets</a>(<a class="code" href="structMTA__RP__proof.html">MTA_RP_proof</a> *p, octet *S, octet *S1, octet *S2);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; </div>
<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="mta_8h.html#a83d69dbe4b86adcf814bf17593066b5d"> 275</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a83d69dbe4b86adcf814bf17593066b5d">MTA_RP_commitment_rv_kill</a>(<a class="code" href="structMTA__RP__commitment__rv.html">MTA_RP_commitment_rv</a> *rv);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment">/* Receiver Zero Knowledge Proof API */</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html"> 280</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html#a050280552a71f496ea2b53985b236563"> 282</a></span>&#160; BIG_1024_58 alpha[FFLEN_2048]; </div>
<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html#a577c79735265327e7636ba9e8fdc8df5"> 283</a></span>&#160; BIG_1024_58 beta[FFLEN_2048]; </div>
<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html#aaa9ee388eaa9eb9a8ff9601a774cdcfd"> 284</a></span>&#160; BIG_1024_58 gamma[FFLEN_2048]; </div>
<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html#a73b42958ba972918f43b9d6f9df7f31e"> 285</a></span>&#160; BIG_1024_58 rho[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html#aefa9426a3a4ad48490520c99c311c486"> 286</a></span>&#160; BIG_1024_58 rho1[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html#ab26f42619df65db7f6dcdde009067ae9"> 287</a></span>&#160; BIG_1024_58 sigma[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment__rv.html#aa306d5c97d2df585d8ec3948bdf95b16"> 288</a></span>&#160; BIG_1024_58 tau[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;} <a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZK_commitment_rv</a>;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment.html"> 292</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;{</div>
<div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment.html#a21736668dad1cf7aba4dd40f059703e0"> 294</a></span>&#160; BIG_1024_58 z[FFLEN_2048]; </div>
<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment.html#a63a83d96029b8e935c16b11c07d0b69a"> 295</a></span>&#160; BIG_1024_58 z1[FFLEN_2048]; </div>
<div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment.html#ab7f5f3c057c0c12ccae9e1b1667a6cfc"> 296</a></span>&#160; BIG_1024_58 t[FFLEN_2048]; </div>
<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment.html#a8c05e4faf0896ddb85501e02a80953ca"> 297</a></span>&#160; BIG_1024_58 v[2 * FFLEN_2048]; </div>
<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="structMTA__ZK__commitment.html#a9ff382fe3ce3795f79bb29c8f2ed738a"> 298</a></span>&#160; BIG_1024_58 w[FFLEN_2048]; </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;} <a class="code" href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a>;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
<div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="structMTA__ZK__proof.html"> 302</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;{</div>
<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="structMTA__ZK__proof.html#a34c86cae80dc0f8688cd1f7d5f1801ab"> 304</a></span>&#160; BIG_1024_58 s[FFLEN_2048]; </div>
<div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="structMTA__ZK__proof.html#a44224d752605c42e4ec583442eb6a61a"> 305</a></span>&#160; BIG_1024_58 s1[FFLEN_2048]; </div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="structMTA__ZK__proof.html#a4141b24bb3ad79318884ac0facb65800"> 306</a></span>&#160; BIG_1024_58 s2[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="structMTA__ZK__proof.html#a2555d0e4789621eff8dc79cf96276860"> 307</a></span>&#160; BIG_1024_58 t1[FFLEN_2048]; </div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="structMTA__ZK__proof.html#affd6b54dc1a58cdc23ac27746c5eb31b"> 308</a></span>&#160; BIG_1024_58 t2[FFLEN_2048 + HFLEN_2048]; </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;} <a class="code" href="structMTA__ZK__proof.html">MTA_ZK_proof</a>;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="mta_8h.html#a882f4c5922a453293eaaa7e3ec876bdf"> 339</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a882f4c5922a453293eaaa7e3ec876bdf">MTA_ZK_commit</a>(csprng *RNG, PAILLIER_public_key *key, <a class="code" href="structCOMMITMENTS__BC__pub__modulus.html">COMMITMENTS_BC_pub_modulus</a> *mod, octet *X, octet *Y, octet *C1, <a class="code" href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a> *c, <a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZK_commitment_rv</a> *rv);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; </div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="mta_8h.html#a437965ad4a0dd602a0c1a4339afb0cb6"> 356</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a437965ad4a0dd602a0c1a4339afb0cb6">MTA_ZK_challenge</a>(PAILLIER_public_key *key, <a class="code" href="structCOMMITMENTS__BC__pub__modulus.html">COMMITMENTS_BC_pub_modulus</a> *mod, <span class="keyword">const</span> octet *C1, <span class="keyword">const</span> octet *C2, <a class="code" href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a> *c, octet *E);</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="mta_8h.html#a275057a0134ee0cbef05e1c719f3f94b"> 378</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a275057a0134ee0cbef05e1c719f3f94b">MTA_ZK_prove</a>(PAILLIER_public_key *key, <a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZK_commitment_rv</a> *rv, octet *X, octet *Y, octet *R, octet *E, <a class="code" href="structMTA__ZK__proof.html">MTA_ZK_proof</a> *p);</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
<div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="mta_8h.html#a34fa2c06ff8a165243621fe6d32a4b64"> 400</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="mta_8h.html#a34fa2c06ff8a165243621fe6d32a4b64">MTA_ZK_verify</a>(PAILLIER_private_key *key, <a class="code" href="structCOMMITMENTS__BC__priv__modulus.html">COMMITMENTS_BC_priv_modulus</a> *mod, octet *C1, octet *C2, octet *E, <a class="code" href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a> *c, <a class="code" href="structMTA__ZK__proof.html">MTA_ZK_proof</a> *p);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="mta_8h.html#afa9bc2f3876442f8519c67c011d4b0c5"> 411</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#afa9bc2f3876442f8519c67c011d4b0c5">MTA_ZK_commitment_toOctets</a>(octet *Z, octet *Z1, octet *T, octet *V, octet *W, <a class="code" href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a> *c);</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="mta_8h.html#ad9cb35ed95b1ad3367fd78437e98aad5"> 422</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#ad9cb35ed95b1ad3367fd78437e98aad5">MTA_ZK_commitment_fromOctets</a>(<a class="code" href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a> *c, octet *Z, octet *Z1, octet *T, octet *V, octet *W);</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; </div>
<div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="mta_8h.html#ae4cc541c94044beaf3a46cd5415da370"> 433</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#ae4cc541c94044beaf3a46cd5415da370">MTA_ZK_proof_toOctets</a>(octet *S, octet *S1, octet *S2, octet *T1, octet *T2, <a class="code" href="structMTA__ZK__proof.html">MTA_ZK_proof</a> *p);</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; </div>
<div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="mta_8h.html#a4d280db3b810c0d69603a8ee97222565"> 444</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a4d280db3b810c0d69603a8ee97222565">MTA_ZK_proof_fromOctets</a>(<a class="code" href="structMTA__ZK__proof.html">MTA_ZK_proof</a> *p, octet *S, octet *S1, octet *S2, octet *T1, octet *T2);</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; </div>
<div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="mta_8h.html#a50085c31f3df46ac6814c46064ed2826"> 450</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a50085c31f3df46ac6814c46064ed2826">MTA_ZK_commitment_rv_kill</a>(<a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZK_commitment_rv</a> *rv);</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; </div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment">/* Receiver Zero Knowledge Proof with Check API */</span></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; </div>
<div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="mta_8h.html#a520066c511d8661c3ebfe4c2a612a046"> 455</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZK_commitment_rv</a> <a class="code" href="mta_8h.html#a520066c511d8661c3ebfe4c2a612a046">MTA_ZKWC_commitment_rv</a>;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; </div>
<div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="structMTA__ZKWC__commitment.html"> 458</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div>
<div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="structMTA__ZKWC__commitment.html#a7025ae8eb9f30ddb6b6d601fd49a1da6"> 460</a></span>&#160; <a class="code" href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a> <a class="code" href="structMTA__ZKWC__commitment.html#a7025ae8eb9f30ddb6b6d601fd49a1da6">zkc</a>; </div>
<div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="structMTA__ZKWC__commitment.html#a6906ba960255cecf7cf29848dc40b9cc"> 461</a></span>&#160; ECP_SECP256K1 <a class="code" href="structMTA__ZKWC__commitment.html#a6906ba960255cecf7cf29848dc40b9cc">U</a>; </div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;} <a class="code" href="structMTA__ZKWC__commitment.html">MTA_ZKWC_commitment</a>;</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; </div>
<div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="mta_8h.html#a96110337c3648cc19cc1bf60f085da14"> 465</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structMTA__ZK__proof.html">MTA_ZK_proof</a> <a class="code" href="mta_8h.html#a96110337c3648cc19cc1bf60f085da14">MTA_ZKWC_proof</a>;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; </div>
<div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="mta_8h.html#a61bd2519a246c273ce42da382732c489"> 496</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a61bd2519a246c273ce42da382732c489">MTA_ZKWC_commit</a>(csprng *RNG, PAILLIER_public_key *key, <a class="code" href="structCOMMITMENTS__BC__pub__modulus.html">COMMITMENTS_BC_pub_modulus</a> *mod, octet *X, octet *Y, octet *C1, <a class="code" href="structMTA__ZKWC__commitment.html">MTA_ZKWC_commitment</a> *c, <a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZKWC_commitment_rv</a> *rv);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
<div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="mta_8h.html#a4dd5d4b2d4fc3e530632fb61b56c3f25"> 514</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a4dd5d4b2d4fc3e530632fb61b56c3f25">MTA_ZKWC_challenge</a>(PAILLIER_public_key *key, <a class="code" href="structCOMMITMENTS__BC__pub__modulus.html">COMMITMENTS_BC_pub_modulus</a> *mod, <span class="keyword">const</span> octet *C1, <span class="keyword">const</span> octet *C2, <span class="keyword">const</span> octet *X, <a class="code" href="structMTA__ZKWC__commitment.html">MTA_ZKWC_commitment</a> *c, octet *E);</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
<div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="mta_8h.html#aec434d125d9f299a78388524ef5f0c51"> 539</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#aec434d125d9f299a78388524ef5f0c51">MTA_ZKWC_prove</a>(PAILLIER_public_key *key, <a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZKWC_commitment_rv</a> *rv, octet *X, octet *Y, octet *R, octet *E, <a class="code" href="structMTA__ZK__proof.html">MTA_ZKWC_proof</a> *p);</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; </div>
<div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="mta_8h.html#aec8c96b0b4983b7e16bdcf7f24b16c08"> 564</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="mta_8h.html#aec8c96b0b4983b7e16bdcf7f24b16c08">MTA_ZKWC_verify</a>(PAILLIER_private_key *key, <a class="code" href="structCOMMITMENTS__BC__priv__modulus.html">COMMITMENTS_BC_priv_modulus</a> *mod, octet *C1, octet *C2, octet *X, octet *E, <a class="code" href="structMTA__ZKWC__commitment.html">MTA_ZKWC_commitment</a> *c, <a class="code" href="structMTA__ZK__proof.html">MTA_ZKWC_proof</a> *p);</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; </div>
<div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="mta_8h.html#ab2611cfca7b4350f0921d56a3aed3185"> 576</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#ab2611cfca7b4350f0921d56a3aed3185">MTA_ZKWC_commitment_toOctets</a>(octet *U, octet *Z, octet *Z1, octet *T, octet *V, octet *W, <a class="code" href="structMTA__ZKWC__commitment.html">MTA_ZKWC_commitment</a> *c);</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; </div>
<div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="mta_8h.html#a051196472aca3ad711f8c8f9f39280ce"> 589</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="mta_8h.html#a051196472aca3ad711f8c8f9f39280ce">MTA_ZKWC_commitment_fromOctets</a>(<a class="code" href="structMTA__ZKWC__commitment.html">MTA_ZKWC_commitment</a> *c, octet *U, octet *Z, octet *Z1, octet *T, octet *V, octet *W);</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; </div>
<div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="mta_8h.html#a127a8be76fdcde455e6d8645fcc93362"> 600</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#a127a8be76fdcde455e6d8645fcc93362">MTA_ZKWC_proof_toOctets</a>(octet *S, octet *S1, octet *S2, octet *T1, octet *T2, <a class="code" href="structMTA__ZK__proof.html">MTA_ZKWC_proof</a> *p);</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; </div>
<div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="mta_8h.html#afdc55dcddd98123e60590190425edab3"> 611</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#afdc55dcddd98123e60590190425edab3">MTA_ZKWC_proof_fromOctets</a>(<a class="code" href="structMTA__ZK__proof.html">MTA_ZKWC_proof</a> *p, octet *S, octet *S1, octet *S2, octet *T1, octet *T2);</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; </div>
<div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="mta_8h.html#adc4cbeae2c13b0e005c70532d2f96e46"> 617</a></span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mta_8h.html#adc4cbeae2c13b0e005c70532d2f96e46">MTA_ZKWC_commitment_rv_kill</a>(<a class="code" href="structMTA__ZK__commitment__rv.html">MTA_ZKWC_commitment_rv</a> *rv);</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; </div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;}</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="acommitments_8h_html"><div class="ttname"><a href="commitments_8h.html">commitments.h</a></div><div class="ttdoc">Commitment schemes declarations.</div></div>
<div class="ttc" id="amta_8h_html_a051196472aca3ad711f8c8f9f39280ce"><div class="ttname"><a href="mta_8h.html#a051196472aca3ad711f8c8f9f39280ce">MTA_ZKWC_commitment_fromOctets</a></div><div class="ttdeci">int MTA_ZKWC_commitment_fromOctets(MTA_ZKWC_commitment *c, octet *U, octet *Z, octet *Z1, octet *T, octet *V, octet *W)</div><div class="ttdoc">Read the commitments from octets.</div></div>
<div class="ttc" id="amta_8h_html_a127a8be76fdcde455e6d8645fcc93362"><div class="ttname"><a href="mta_8h.html#a127a8be76fdcde455e6d8645fcc93362">MTA_ZKWC_proof_toOctets</a></div><div class="ttdeci">void MTA_ZKWC_proof_toOctets(octet *S, octet *S1, octet *S2, octet *T1, octet *T2, MTA_ZKWC_proof *p)</div><div class="ttdoc">Dump the proof to octets.</div></div>
<div class="ttc" id="amta_8h_html_a275057a0134ee0cbef05e1c719f3f94b"><div class="ttname"><a href="mta_8h.html#a275057a0134ee0cbef05e1c719f3f94b">MTA_ZK_prove</a></div><div class="ttdeci">void MTA_ZK_prove(PAILLIER_public_key *key, MTA_ZK_commitment_rv *rv, octet *X, octet *Y, octet *R, octet *E, MTA_ZK_proof *p)</div><div class="ttdoc">Proof generation for Receiver ZKP.</div></div>
<div class="ttc" id="amta_8h_html_a34fa2c06ff8a165243621fe6d32a4b64"><div class="ttname"><a href="mta_8h.html#a34fa2c06ff8a165243621fe6d32a4b64">MTA_ZK_verify</a></div><div class="ttdeci">int MTA_ZK_verify(PAILLIER_private_key *key, COMMITMENTS_BC_priv_modulus *mod, octet *C1, octet *C2, octet *E, MTA_ZK_commitment *c, MTA_ZK_proof *p)</div><div class="ttdoc">Verify a Proof for Receiver ZKP.</div></div>
<div class="ttc" id="amta_8h_html_a437965ad4a0dd602a0c1a4339afb0cb6"><div class="ttname"><a href="mta_8h.html#a437965ad4a0dd602a0c1a4339afb0cb6">MTA_ZK_challenge</a></div><div class="ttdeci">void MTA_ZK_challenge(PAILLIER_public_key *key, COMMITMENTS_BC_pub_modulus *mod, const octet *C1, const octet *C2, MTA_ZK_commitment *c, octet *E)</div><div class="ttdoc">Deterministic Challenge generations for Receiver ZKP.</div></div>
<div class="ttc" id="amta_8h_html_a4c516e4898f3fbcdd55ed70ea0e336ef"><div class="ttname"><a href="mta_8h.html#a4c516e4898f3fbcdd55ed70ea0e336ef">MTA_RP_proof_toOctets</a></div><div class="ttdeci">void MTA_RP_proof_toOctets(octet *S, octet *S1, octet *S2, MTA_RP_proof *p)</div><div class="ttdoc">Dump the proof to octets.</div></div>
<div class="ttc" id="amta_8h_html_a4d280db3b810c0d69603a8ee97222565"><div class="ttname"><a href="mta_8h.html#a4d280db3b810c0d69603a8ee97222565">MTA_ZK_proof_fromOctets</a></div><div class="ttdeci">void MTA_ZK_proof_fromOctets(MTA_ZK_proof *p, octet *S, octet *S1, octet *S2, octet *T1, octet *T2)</div><div class="ttdoc">Read the proof from octets.</div></div>
<div class="ttc" id="amta_8h_html_a4dd5d4b2d4fc3e530632fb61b56c3f25"><div class="ttname"><a href="mta_8h.html#a4dd5d4b2d4fc3e530632fb61b56c3f25">MTA_ZKWC_challenge</a></div><div class="ttdeci">void MTA_ZKWC_challenge(PAILLIER_public_key *key, COMMITMENTS_BC_pub_modulus *mod, const octet *C1, const octet *C2, const octet *X, MTA_ZKWC_commitment *c, octet *E)</div><div class="ttdoc">Deterministic Challenge generations for Receiver ZKP with check.</div></div>
<div class="ttc" id="amta_8h_html_a50085c31f3df46ac6814c46064ed2826"><div class="ttname"><a href="mta_8h.html#a50085c31f3df46ac6814c46064ed2826">MTA_ZK_commitment_rv_kill</a></div><div class="ttdeci">void MTA_ZK_commitment_rv_kill(MTA_ZK_commitment_rv *rv)</div><div class="ttdoc">Clean the memory containing the random values.</div></div>
<div class="ttc" id="amta_8h_html_a520066c511d8661c3ebfe4c2a612a046"><div class="ttname"><a href="mta_8h.html#a520066c511d8661c3ebfe4c2a612a046">MTA_ZKWC_commitment_rv</a></div><div class="ttdeci">MTA_ZK_commitment_rv MTA_ZKWC_commitment_rv</div><div class="ttdoc">Secret random values for the receiver ZKP with check commitment.</div><div class="ttdef"><b>Definition:</b> mta.h:455</div></div>
<div class="ttc" id="amta_8h_html_a585141482d0be764359316dc4aa9a345"><div class="ttname"><a href="mta_8h.html#a585141482d0be764359316dc4aa9a345">MPC_SUM_MTA</a></div><div class="ttdeci">void MPC_SUM_MTA(const octet *A, const octet *B, const octet *ALPHA, const octet *BETA, octet *SUM)</div><div class="ttdoc">Sum of secret shares.</div></div>
<div class="ttc" id="amta_8h_html_a5f42fb5d017f34db268c112f7c8d056e"><div class="ttname"><a href="mta_8h.html#a5f42fb5d017f34db268c112f7c8d056e">MTA_RP_commitment_fromOctets</a></div><div class="ttdeci">void MTA_RP_commitment_fromOctets(MTA_RP_commitment *c, octet *Z, octet *U, octet *W)</div><div class="ttdoc">Read the commitments from octets.</div></div>
<div class="ttc" id="amta_8h_html_a61bd2519a246c273ce42da382732c489"><div class="ttname"><a href="mta_8h.html#a61bd2519a246c273ce42da382732c489">MTA_ZKWC_commit</a></div><div class="ttdeci">void MTA_ZKWC_commit(csprng *RNG, PAILLIER_public_key *key, COMMITMENTS_BC_pub_modulus *mod, octet *X, octet *Y, octet *C1, MTA_ZKWC_commitment *c, MTA_ZKWC_commitment_rv *rv)</div><div class="ttdoc">Commitment Generation for Receiver ZKP with check.</div></div>
<div class="ttc" id="amta_8h_html_a673e46de79006b3d5e349a0eec6bd5c5"><div class="ttname"><a href="mta_8h.html#a673e46de79006b3d5e349a0eec6bd5c5">MPC_MTA_CLIENT2</a></div><div class="ttdeci">void MPC_MTA_CLIENT2(PAILLIER_private_key *PRIV, octet *CB, octet *ALPHA)</div><div class="ttdoc">Client MtA second pass.</div></div>
<div class="ttc" id="amta_8h_html_a7bbc83a1d90c466061839c88375576a3"><div class="ttname"><a href="mta_8h.html#a7bbc83a1d90c466061839c88375576a3">MPC_MTA_CLIENT1</a></div><div class="ttdeci">void MPC_MTA_CLIENT1(csprng *RNG, PAILLIER_public_key *PUB, octet *A, octet *CA, octet *R)</div><div class="ttdoc">Client MTA first pass.</div></div>
<div class="ttc" id="amta_8h_html_a83d69dbe4b86adcf814bf17593066b5d"><div class="ttname"><a href="mta_8h.html#a83d69dbe4b86adcf814bf17593066b5d">MTA_RP_commitment_rv_kill</a></div><div class="ttdeci">void MTA_RP_commitment_rv_kill(MTA_RP_commitment_rv *rv)</div><div class="ttdoc">Clean the memory containing the random values.</div></div>
<div class="ttc" id="amta_8h_html_a840590c8db0b435bece74978adf0748d"><div class="ttname"><a href="mta_8h.html#a840590c8db0b435bece74978adf0748d">MTA_RP_prove</a></div><div class="ttdeci">void MTA_RP_prove(PAILLIER_private_key *key, MTA_RP_commitment_rv *rv, octet *M, octet *R, octet *E, MTA_RP_proof *p)</div><div class="ttdoc">Proof generation.</div></div>
<div class="ttc" id="amta_8h_html_a882f4c5922a453293eaaa7e3ec876bdf"><div class="ttname"><a href="mta_8h.html#a882f4c5922a453293eaaa7e3ec876bdf">MTA_ZK_commit</a></div><div class="ttdeci">void MTA_ZK_commit(csprng *RNG, PAILLIER_public_key *key, COMMITMENTS_BC_pub_modulus *mod, octet *X, octet *Y, octet *C1, MTA_ZK_commitment *c, MTA_ZK_commitment_rv *rv)</div><div class="ttdoc">Commitment Generation for Receiver ZKP.</div></div>
<div class="ttc" id="amta_8h_html_a96110337c3648cc19cc1bf60f085da14"><div class="ttname"><a href="mta_8h.html#a96110337c3648cc19cc1bf60f085da14">MTA_ZKWC_proof</a></div><div class="ttdeci">MTA_ZK_proof MTA_ZKWC_proof</div><div class="ttdoc">Range Proof for the Receiver ZKP with check.</div><div class="ttdef"><b>Definition:</b> mta.h:465</div></div>
<div class="ttc" id="amta_8h_html_a9ae812a8b7fa69ae98d8eec9db51cc83"><div class="ttname"><a href="mta_8h.html#a9ae812a8b7fa69ae98d8eec9db51cc83">MTA_RP_commit</a></div><div class="ttdeci">void MTA_RP_commit(csprng *RNG, PAILLIER_private_key *key, COMMITMENTS_BC_pub_modulus *mod, octet *M, MTA_RP_commitment *c, MTA_RP_commitment_rv *rv)</div><div class="ttdoc">Commitment Generation.</div></div>
<div class="ttc" id="amta_8h_html_aa60c3b4a80719d29f0ebb747f3fc31a1"><div class="ttname"><a href="mta_8h.html#aa60c3b4a80719d29f0ebb747f3fc31a1">MTA_RP_commitment_toOctets</a></div><div class="ttdeci">void MTA_RP_commitment_toOctets(octet *Z, octet *U, octet *W, MTA_RP_commitment *c)</div><div class="ttdoc">Dump the commitment to octets.</div></div>
<div class="ttc" id="amta_8h_html_aaa4c5afa267be00e1819becd53805795"><div class="ttname"><a href="mta_8h.html#aaa4c5afa267be00e1819becd53805795">MTA_RP_verify</a></div><div class="ttdeci">int MTA_RP_verify(PAILLIER_public_key *key, COMMITMENTS_BC_priv_modulus *mod, octet *CT, octet *E, MTA_RP_commitment *c, MTA_RP_proof *p)</div><div class="ttdoc">Verify a Proof.</div></div>
<div class="ttc" id="amta_8h_html_aae8035b9c2d5b29f3ad9df3c44466e1d"><div class="ttname"><a href="mta_8h.html#aae8035b9c2d5b29f3ad9df3c44466e1d">MTA_RP_challenge</a></div><div class="ttdeci">void MTA_RP_challenge(PAILLIER_public_key *key, COMMITMENTS_BC_pub_modulus *mod, const octet *CT, MTA_RP_commitment *c, octet *E)</div><div class="ttdoc">Deterministic Challenge generations.</div></div>
<div class="ttc" id="amta_8h_html_ab2611cfca7b4350f0921d56a3aed3185"><div class="ttname"><a href="mta_8h.html#ab2611cfca7b4350f0921d56a3aed3185">MTA_ZKWC_commitment_toOctets</a></div><div class="ttdeci">void MTA_ZKWC_commitment_toOctets(octet *U, octet *Z, octet *Z1, octet *T, octet *V, octet *W, MTA_ZKWC_commitment *c)</div><div class="ttdoc">Dump the commitment to octets.</div></div>
<div class="ttc" id="amta_8h_html_ad60da72de670c62131bc57f9e1070c84"><div class="ttname"><a href="mta_8h.html#ad60da72de670c62131bc57f9e1070c84">MTA_RP_proof_fromOctets</a></div><div class="ttdeci">void MTA_RP_proof_fromOctets(MTA_RP_proof *p, octet *S, octet *S1, octet *S2)</div><div class="ttdoc">Read the proof from octets.</div></div>
<div class="ttc" id="amta_8h_html_ad9cb35ed95b1ad3367fd78437e98aad5"><div class="ttname"><a href="mta_8h.html#ad9cb35ed95b1ad3367fd78437e98aad5">MTA_ZK_commitment_fromOctets</a></div><div class="ttdeci">void MTA_ZK_commitment_fromOctets(MTA_ZK_commitment *c, octet *Z, octet *Z1, octet *T, octet *V, octet *W)</div><div class="ttdoc">Read the commitments from octets.</div></div>
<div class="ttc" id="amta_8h_html_adc4cbeae2c13b0e005c70532d2f96e46"><div class="ttname"><a href="mta_8h.html#adc4cbeae2c13b0e005c70532d2f96e46">MTA_ZKWC_commitment_rv_kill</a></div><div class="ttdeci">void MTA_ZKWC_commitment_rv_kill(MTA_ZKWC_commitment_rv *rv)</div><div class="ttdoc">Clean the memory containing the random values.</div></div>
<div class="ttc" id="amta_8h_html_ae4971990b60c103d7cb596c9a0d1d205"><div class="ttname"><a href="mta_8h.html#ae4971990b60c103d7cb596c9a0d1d205">MTA_ZK_random_challenge</a></div><div class="ttdeci">void MTA_ZK_random_challenge(csprng *RNG, octet *E)</div><div class="ttdoc">Random challenge for any of the ZK Proofs.</div></div>
<div class="ttc" id="amta_8h_html_ae4cc541c94044beaf3a46cd5415da370"><div class="ttname"><a href="mta_8h.html#ae4cc541c94044beaf3a46cd5415da370">MTA_ZK_proof_toOctets</a></div><div class="ttdeci">void MTA_ZK_proof_toOctets(octet *S, octet *S1, octet *S2, octet *T1, octet *T2, MTA_ZK_proof *p)</div><div class="ttdoc">Dump the proof to octets.</div></div>
<div class="ttc" id="amta_8h_html_aec434d125d9f299a78388524ef5f0c51"><div class="ttname"><a href="mta_8h.html#aec434d125d9f299a78388524ef5f0c51">MTA_ZKWC_prove</a></div><div class="ttdeci">void MTA_ZKWC_prove(PAILLIER_public_key *key, MTA_ZKWC_commitment_rv *rv, octet *X, octet *Y, octet *R, octet *E, MTA_ZKWC_proof *p)</div><div class="ttdoc">Proof generation for Receiver ZKP with check.</div></div>
<div class="ttc" id="amta_8h_html_aec8c96b0b4983b7e16bdcf7f24b16c08"><div class="ttname"><a href="mta_8h.html#aec8c96b0b4983b7e16bdcf7f24b16c08">MTA_ZKWC_verify</a></div><div class="ttdeci">int MTA_ZKWC_verify(PAILLIER_private_key *key, COMMITMENTS_BC_priv_modulus *mod, octet *C1, octet *C2, octet *X, octet *E, MTA_ZKWC_commitment *c, MTA_ZKWC_proof *p)</div><div class="ttdoc">Verify a Proof for Receiver ZKP with check.</div></div>
<div class="ttc" id="amta_8h_html_af6150f97b1d2df1d70ec419211d37592"><div class="ttname"><a href="mta_8h.html#af6150f97b1d2df1d70ec419211d37592">MPC_MTA_SERVER</a></div><div class="ttdeci">void MPC_MTA_SERVER(csprng *RNG, PAILLIER_public_key *PUB, octet *B, octet *CA, octet *Z, octet *R, octet *CB, octet *BETA)</div><div class="ttdoc">Server MtA.</div></div>
<div class="ttc" id="amta_8h_html_afa9bc2f3876442f8519c67c011d4b0c5"><div class="ttname"><a href="mta_8h.html#afa9bc2f3876442f8519c67c011d4b0c5">MTA_ZK_commitment_toOctets</a></div><div class="ttdeci">void MTA_ZK_commitment_toOctets(octet *Z, octet *Z1, octet *T, octet *V, octet *W, MTA_ZK_commitment *c)</div><div class="ttdoc">Dump the commitment to octets.</div></div>
<div class="ttc" id="amta_8h_html_afdc55dcddd98123e60590190425edab3"><div class="ttname"><a href="mta_8h.html#afdc55dcddd98123e60590190425edab3">MTA_ZKWC_proof_fromOctets</a></div><div class="ttdeci">void MTA_ZKWC_proof_fromOctets(MTA_ZKWC_proof *p, octet *S, octet *S1, octet *S2, octet *T1, octet *T2)</div><div class="ttdoc">Read the proof from octets.</div></div>
<div class="ttc" id="astructCOMMITMENTS__BC__priv__modulus_html"><div class="ttname"><a href="structCOMMITMENTS__BC__priv__modulus.html">COMMITMENTS_BC_priv_modulus</a></div><div class="ttdoc">RSA modulus for Bit Commitment.</div><div class="ttdef"><b>Definition:</b> commitments.h:71</div></div>
<div class="ttc" id="astructCOMMITMENTS__BC__pub__modulus_html"><div class="ttname"><a href="structCOMMITMENTS__BC__pub__modulus.html">COMMITMENTS_BC_pub_modulus</a></div><div class="ttdoc">Public RSA modulus for Bit Commitment.</div><div class="ttdef"><b>Definition:</b> commitments.h:85</div></div>
<div class="ttc" id="astructMTA__RP__commitment__rv_html"><div class="ttname"><a href="structMTA__RP__commitment__rv.html">MTA_RP_commitment_rv</a></div><div class="ttdoc">Secret random values for the Range Proof commitment.</div><div class="ttdef"><b>Definition:</b> mta.h:134</div></div>
<div class="ttc" id="astructMTA__RP__commitment_html"><div class="ttname"><a href="structMTA__RP__commitment.html">MTA_RP_commitment</a></div><div class="ttdoc">Public commitment for the Range Proof.</div><div class="ttdef"><b>Definition:</b> mta.h:143</div></div>
<div class="ttc" id="astructMTA__RP__proof_html"><div class="ttname"><a href="structMTA__RP__proof.html">MTA_RP_proof</a></div><div class="ttdoc">Range Proof.</div><div class="ttdef"><b>Definition:</b> mta.h:151</div></div>
<div class="ttc" id="astructMTA__ZKWC__commitment_html"><div class="ttname"><a href="structMTA__ZKWC__commitment.html">MTA_ZKWC_commitment</a></div><div class="ttdoc">Public commitment for the Receiver ZKP with check.</div><div class="ttdef"><b>Definition:</b> mta.h:459</div></div>
<div class="ttc" id="astructMTA__ZKWC__commitment_html_a6906ba960255cecf7cf29848dc40b9cc"><div class="ttname"><a href="structMTA__ZKWC__commitment.html#a6906ba960255cecf7cf29848dc40b9cc">MTA_ZKWC_commitment::U</a></div><div class="ttdeci">ECP_SECP256K1 U</div><div class="ttdef"><b>Definition:</b> mta.h:461</div></div>
<div class="ttc" id="astructMTA__ZKWC__commitment_html_a7025ae8eb9f30ddb6b6d601fd49a1da6"><div class="ttname"><a href="structMTA__ZKWC__commitment.html#a7025ae8eb9f30ddb6b6d601fd49a1da6">MTA_ZKWC_commitment::zkc</a></div><div class="ttdeci">MTA_ZK_commitment zkc</div><div class="ttdef"><b>Definition:</b> mta.h:460</div></div>
<div class="ttc" id="astructMTA__ZK__commitment__rv_html"><div class="ttname"><a href="structMTA__ZK__commitment__rv.html">MTA_ZK_commitment_rv</a></div><div class="ttdoc">Secret random values for the receiver ZKP commitment.</div><div class="ttdef"><b>Definition:</b> mta.h:281</div></div>
<div class="ttc" id="astructMTA__ZK__commitment_html"><div class="ttname"><a href="structMTA__ZK__commitment.html">MTA_ZK_commitment</a></div><div class="ttdoc">Public commitment for the Receiver ZKP.</div><div class="ttdef"><b>Definition:</b> mta.h:293</div></div>
<div class="ttc" id="astructMTA__ZK__proof_html"><div class="ttname"><a href="structMTA__ZK__proof.html">MTA_ZK_proof</a></div><div class="ttdoc">Range Proof for the Receiver ZKP.</div><div class="ttdef"><b>Definition:</b> mta.h:303</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>