Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>TL;DR &#8212; klefki 1.7 documentation</title>
    <link rel="stylesheet" href="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Fpygments.css" type="text/css" />
    <link rel="stylesheet" href="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Falabaster.css" type="text/css" />
    <link rel="stylesheet" type="text/css" href="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Fgraphviz.css" />
    <script id="documentation_options" data-url_root="./" src="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Fdocumentation_options.js"></script>
    <script src="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Fjquery.js"></script>
    <script src="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Funderscore.js"></script>
    <script src="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Fdoctools.js"></script>
    <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script" rel="nofollow">https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
    <script async="async" src="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script" rel="nofollow">https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true, "ignoreClass": "document", "processClass": "math|output_area"}})</script>
    <link rel="index" title="Index" href="proxy.php?url=https%3A%2F%2Fgithub.com%2Fgenindex.html" />
    <link rel="search" title="Search" href="proxy.php?url=https%3A%2F%2Fgithub.com%2Fsearch.html" />
    <link rel="next" title="Paillier’s encryption Scheme" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FVitalik%2527s%2520stealth%2520addresses%2520Step%2520by%2520Step%2520with%2520klekfi.html" />
    <link rel="prev" title="Welcome to klefki!" href="proxy.php?url=https%3A%2F%2Fgithub.com%2Findex.html" />
   
  <link rel="stylesheet" href="proxy.php?url=https%3A%2F%2Fgithub.com%2F_static%2Fcustom.css" type="text/css" />
  
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />

  </head><body>
  

    <div class="document">

      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  <p><a class="reference external" href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://travis-ci.org/RyanKung/klefki"><img" rel="nofollow">https://travis-ci.org/RyanKung/klefki"><img alt="travis" src="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://travis-ci.org/RyanKung/klefki.svg?branch=master" rel="nofollow">https://travis-ci.org/RyanKung/klefki.svg?branch=master" /></a></p>
<p><img alt="klefki" src="proxy.php?url=https%3A%2F%2Fgithub.com%2Fres%2F707Klefki.png" /></p>
<hr class="docutils" />
<blockquote>
<div><p>Klefki (Japanese: クレッフィ Cleffy) is a dual-type Steel/Fairy Pokémon introduced in Generation VI. It is not known to evolve into or from any other Pokémon.</p>
</div></blockquote>
<hr class="docutils" />
<div class="section" id="tl-dr">
<h1>TL;DR<a class="headerlink" href="#tl-dr" title="Permalink to this headline">¶</a></h1>
<p><strong>Klefki is a playground for researching elliptic curve group based cryptocoins, such as Bitcoin and Ethereum. All data types &amp; structures are based on mathematical defination of abstract algebra.</strong></p>
<div class="section" id="try-it">
<h2><a class="reference external" href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://repl.it/&#64;RyanKung/Klefki-Demo">Try" rel="nofollow">https://repl.it/&#64;RyanKung/Klefki-Demo">Try it!</a><a class="headerlink" href="#try-it" title="Permalink to this headline">¶</a></h2>
</div>
<div class="section" id="for-installation-require-python-3-6">
<h2>For Installation (require python&gt;=3.6):<a class="headerlink" href="#for-installation-require-python-3-6" title="Permalink to this headline">¶</a></h2>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>pip3 install klefki

klefki shell
</pre></div>
</div>
<p>Have Fun!!!!</p>
</div>
<div class="section" id="aat-abstract-algebra-type">
<h2>AAT(Abstract Algebra Type)<a class="headerlink" href="#aat-abstract-algebra-type" title="Permalink to this headline">¶</a></h2>
<p>With <code class="docutils literal notranslate"><span class="pre">AAT(Abstract</span> <span class="pre">Algebra</span> <span class="pre">Type)</span></code> you can easily implement the bitcoin <code class="docutils literal notranslate"><span class="pre">priv/pub</span> <span class="pre">key</span></code> and <code class="docutils literal notranslate"><span class="pre">sign/verify</span></code> algorithms like this:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span>
<span class="kn">import</span> <span class="nn">random</span>
<span class="kn">from</span> <span class="nn">klefki.utils</span> <span class="kn">import</span> <span class="n">to_sha256int</span>
<span class="kn">from</span> <span class="nn">klefki.types.algebra.concrete</span> <span class="kn">import</span> <span class="p">(</span>
    <span class="n">JacobianGroupSecp256k1</span> <span class="k">as</span> <span class="n">JG</span><span class="p">,</span>
    <span class="n">EllipticCurveCyclicSubgroupSecp256k1</span> <span class="k">as</span> <span class="n">CG</span><span class="p">,</span>
    <span class="n">EllipticCurveGroupSecp256k1</span> <span class="k">as</span> <span class="n">ECG</span><span class="p">,</span>
    <span class="n">FiniteFieldCyclicSecp256k1</span> <span class="k">as</span> <span class="n">CF</span>
<span class="p">)</span>


<span class="n">N</span> <span class="o">=</span> <span class="n">CG</span><span class="o">.</span><span class="n">N</span>
<span class="n">G</span> <span class="o">=</span> <span class="n">CG</span><span class="o">.</span><span class="n">G</span>


<span class="k">def</span> <span class="nf">random_privkey</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">CF</span><span class="p">:</span>
    <span class="k">return</span> <span class="n">CF</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="p">))</span>


<span class="k">def</span> <span class="nf">pubkey</span><span class="p">(</span><span class="n">priv</span><span class="p">:</span> <span class="n">CF</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">ECG</span><span class="p">:</span>
    <span class="k">return</span> <span class="n">ECG</span><span class="p">(</span><span class="n">JG</span><span class="p">(</span><span class="n">G</span> <span class="o">@</span> <span class="n">priv</span><span class="p">))</span>


<span class="k">def</span> <span class="nf">sign</span><span class="p">(</span><span class="n">priv</span><span class="p">:</span> <span class="n">CF</span><span class="p">,</span> <span class="n">m</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">tuple</span><span class="p">:</span>
    <span class="n">k</span> <span class="o">=</span> <span class="n">CF</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="p">))</span>
    <span class="n">z</span> <span class="o">=</span> <span class="n">CF</span><span class="p">(</span><span class="n">to_sha256int</span><span class="p">(</span><span class="n">m</span><span class="p">))</span>
    <span class="n">r</span> <span class="o">=</span> <span class="n">CF</span><span class="p">((</span><span class="n">G</span> <span class="o">@</span> <span class="n">k</span><span class="p">)</span><span class="o">.</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>  <span class="c1"># From Secp256k1Field to CyclicSecp256k1Field</span>
    <span class="n">s</span> <span class="o">=</span> <span class="n">z</span> <span class="o">/</span> <span class="n">k</span> <span class="o">+</span> <span class="n">priv</span> <span class="o">*</span> <span class="n">r</span> <span class="o">/</span> <span class="n">k</span>
    <span class="k">return</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span>



<span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="n">pub</span><span class="p">:</span> <span class="n">ECG</span><span class="p">,</span> <span class="n">sig</span><span class="p">:</span> <span class="nb">tuple</span><span class="p">,</span> <span class="n">mhash</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
    <span class="n">r</span><span class="p">,</span> <span class="n">s</span> <span class="o">=</span> <span class="n">sig</span>
    <span class="n">z</span> <span class="o">=</span> <span class="n">CF</span><span class="p">(</span><span class="n">mhash</span><span class="p">)</span>
    <span class="n">u1</span> <span class="o">=</span> <span class="n">z</span> <span class="o">/</span> <span class="n">s</span>
    <span class="n">u2</span> <span class="o">=</span> <span class="n">r</span> <span class="o">/</span> <span class="n">s</span>
    <span class="n">rp</span> <span class="o">=</span> <span class="n">G</span> <span class="o">@</span> <span class="n">u1</span> <span class="o">+</span> <span class="n">pub</span> <span class="o">@</span> <span class="n">u2</span>
    <span class="k">return</span> <span class="n">r</span> <span class="o">==</span> <span class="n">rp</span><span class="o">.</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</pre></div>
</div>
<p>Even proof the <code class="docutils literal notranslate"><span class="pre">Sign/Verify</span></code> algorithm mathematically.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">proof</span><span class="p">():</span>
    <span class="n">priv</span> <span class="o">=</span> <span class="n">random_privkey</span><span class="p">()</span>
    <span class="n">m</span> <span class="o">=</span> <span class="s1">&#39;test&#39;</span>
    <span class="n">k</span> <span class="o">=</span> <span class="n">CF</span><span class="p">(</span><span class="n">random_privkey</span><span class="p">())</span>
    <span class="n">z</span> <span class="o">=</span> <span class="n">CF</span><span class="p">(</span><span class="n">to_sha256int</span><span class="p">(</span><span class="n">m</span><span class="p">))</span>
    <span class="n">r</span> <span class="o">=</span> <span class="n">CF</span><span class="p">((</span><span class="n">G</span> <span class="o">@</span> <span class="n">k</span><span class="p">)</span><span class="o">.</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
    <span class="n">s</span> <span class="o">=</span> <span class="n">z</span> <span class="o">/</span> <span class="n">k</span> <span class="o">+</span> <span class="n">priv</span> <span class="o">*</span> <span class="n">r</span> <span class="o">/</span> <span class="n">k</span>

    <span class="k">assert</span> <span class="n">k</span> <span class="o">==</span> <span class="n">z</span> <span class="o">/</span> <span class="n">s</span> <span class="o">+</span> <span class="n">priv</span> <span class="o">*</span> <span class="n">r</span> <span class="o">/</span> <span class="n">s</span>
    <span class="k">assert</span> <span class="n">G</span> <span class="o">@</span> <span class="n">k</span> <span class="o">==</span> <span class="n">G</span> <span class="o">@</span> <span class="p">(</span><span class="n">z</span> <span class="o">/</span> <span class="n">s</span> <span class="o">+</span> <span class="n">priv</span> <span class="o">*</span> <span class="n">r</span> <span class="o">/</span> <span class="n">s</span><span class="p">)</span>
    <span class="k">assert</span> <span class="n">G</span> <span class="o">@</span> <span class="n">k</span> <span class="o">==</span> <span class="n">G</span> <span class="o">@</span> <span class="p">(</span><span class="n">z</span> <span class="o">/</span> <span class="n">s</span><span class="p">)</span> <span class="o">+</span> <span class="n">G</span> <span class="o">@</span> <span class="n">priv</span> <span class="o">@</span> <span class="p">(</span><span class="n">r</span> <span class="o">/</span> <span class="n">s</span><span class="p">)</span>

    <span class="n">pub</span> <span class="o">=</span> <span class="n">G</span> <span class="o">@</span> <span class="n">priv</span>
    <span class="k">assert</span> <span class="n">pub</span> <span class="o">==</span> <span class="n">pubkey</span><span class="p">(</span><span class="n">priv</span><span class="p">)</span>
    <span class="k">assert</span> <span class="n">G</span> <span class="o">@</span> <span class="n">k</span> <span class="o">==</span> <span class="n">G</span> <span class="o">@</span> <span class="p">(</span><span class="n">z</span> <span class="o">/</span> <span class="n">s</span><span class="p">)</span> <span class="o">+</span> <span class="n">pub</span> <span class="o">@</span> <span class="p">(</span><span class="n">r</span> <span class="o">/</span> <span class="n">s</span><span class="p">)</span>
    <span class="n">u1</span> <span class="o">=</span> <span class="n">z</span> <span class="o">/</span> <span class="n">s</span>
    <span class="n">u2</span> <span class="o">=</span> <span class="n">r</span> <span class="o">/</span> <span class="n">s</span>
    <span class="k">assert</span> <span class="n">G</span> <span class="o">@</span> <span class="n">k</span> <span class="o">==</span> <span class="n">G</span> <span class="o">@</span> <span class="n">u1</span> <span class="o">+</span> <span class="n">pub</span> <span class="o">@</span> <span class="n">u2</span>

</pre></div>
</div>
<p>Or transform your Bitcoin Private Key to EOS Private/Pub key (or back)</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">klefki.bitcoin.private</span> <span class="kn">import</span> <span class="n">decode_privkey</span>
<span class="kn">from</span> <span class="nn">klefki.eos.public</span> <span class="kn">import</span> <span class="n">gen_pub_key</span>
<span class="kn">from</span> <span class="nn">klefki.eos.private</span> <span class="kn">import</span> <span class="n">encode_privkey</span>


<span class="k">def</span> <span class="nf">test_to_eos</span><span class="p">(</span><span class="n">priv</span><span class="p">):</span>
    <span class="n">key</span> <span class="o">=</span> <span class="n">decode_privkey</span><span class="p">(</span><span class="n">priv</span><span class="p">)</span>
    <span class="n">eos_priv</span> <span class="o">=</span> <span class="n">encode_privkey</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
    <span class="n">eos_pub</span> <span class="o">=</span> <span class="n">gen_pub_key</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">eos_priv</span><span class="p">,</span> <span class="n">eos_pub</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="bijection">
<h2>Bijection<a class="headerlink" href="#bijection" title="Permalink to this headline">¶</a></h2>
<p>A morphism f : X → Y in a category is an isomorphism if it admits a two-sided inverse.</p>
<p>You can define your bijection encoder/decoder like this.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">klefki.types.algebra.isomorphism</span> <span class="kn">import</span> <span class="n">bijection</span><span class="p">,</span> <span class="n">do</span>
<span class="kn">from</span> <span class="nn">klefki.asn</span> <span class="kn">import</span> <span class="n">signature</span> <span class="k">as</span> <span class="n">sig</span>
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">partial</span>
<span class="kn">import</span> <span class="nn">base58</span>
<span class="kn">from</span> <span class="nn">pyasn1.codec.der.encoder</span> <span class="kn">import</span> <span class="n">encode</span>
<span class="kn">from</span> <span class="nn">pyasn1.codec.der.decoder</span> <span class="kn">import</span> <span class="n">decode</span>


<span class="n">b58encoder</span> <span class="o">=</span> <span class="n">bijection</span><span class="p">(</span><span class="n">base58</span><span class="o">.</span><span class="n">b58decode</span><span class="p">)(</span><span class="n">base58</span><span class="o">.</span><span class="n">b58encode</span><span class="p">)</span>
<span class="n">asn1encoder</span> <span class="o">=</span> <span class="n">bijection</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="n">decode</span><span class="p">,</span> <span class="n">asn1Spec</span><span class="o">=</span><span class="n">sig</span><span class="o">.</span><span class="n">ECDSA_Sig_Value</span><span class="p">()))(</span><span class="n">encode</span><span class="p">)</span>

<span class="n">data</span> <span class="o">=</span> <span class="n">sig</span><span class="o">.</span><span class="n">ECDSA_Sig_Value</span><span class="p">()</span>
<span class="n">data</span><span class="p">[</span><span class="s1">&#39;r&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">123</span>
<span class="n">data</span><span class="p">[</span><span class="s1">&#39;s&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">234</span>

<span class="n">process</span> <span class="o">=</span> <span class="n">do</span><span class="p">(</span><span class="n">asn1encoder</span><span class="p">,</span> <span class="n">b58encoder</span><span class="p">)</span>
<span class="n">process</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="o">&gt;&gt;&gt;</span> <span class="s1">&#39;cTVygpHoWBNR&#39;</span>

<span class="p">(</span><span class="o">~</span><span class="n">process</span><span class="p">)(</span><span class="n">process</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="o">&gt;&gt;&gt;</span> <span class="p">(</span><span class="n">ECDSA_Sig_Value</span><span class="p">()</span><span class="o">.</span><span class="n">setComponentByPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Integer</span><span class="p">(</span><span class="mi">123</span><span class="p">))</span><span class="o">.</span><span class="n">setComponentByPosition</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">Integer</span><span class="p">(</span><span class="mi">234</span><span class="p">)),</span>
 <span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>


          </div>
          
        </div>
      </div>
    <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/ZeroProphet/klefki">https://github.com/ZeroProphet/klefki">
        <img style="position: absolute; top: 0; right: 0; border: 0;" src="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" rel="nofollow">https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub">
    </a>

      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="proxy.php?url=https%3A%2F%2Fgithub.com%2Findex.html">klefki</a></h1>








<h3>Navigation</h3>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">TL;DR</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#try-it">Try it!</a></li>
<li class="toctree-l2"><a class="reference internal" href="#for-installation-require-python-3-6">For Installation (require python&gt;=3.6):</a></li>
<li class="toctree-l2"><a class="reference internal" href="#aat-abstract-algebra-type">AAT(Abstract Algebra Type)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#bijection">Bijection</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FVitalik%2527s%2520stealth%2520addresses%2520Step%2520by%2520Step%2520with%2520klekfi.html">Paillier’s encryption Scheme</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FNon-interactive%2520and%2520Reusable%2520Non-malleable%2520Commitment%2520Schemes.html">Non-interactive and Reusable Non-malleable Commitment Schemes</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FPedersen%2520Commitment.html">Pedersen Commitment</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FOn%2520Sigma%2520Protocols.html"><span class="math notranslate nohighlight">\(\Sigma\)</span> Protocols</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FAbstract%2520Algebra%2520Types.html">Abstract Algebra Types</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FHomomorphic%2520Encryption.html">Homomorphic Encryption</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FFrom%2520ZK%2520to%2520Bulletproofs.html">From ZK to Bulletproofsproof via Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FPaillier%2527s%2520encryption%2520Scheme.html">Paillier’s encryption Scheme</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FElGamal.html">ElGamal</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FElGamal.html%23Test">Test</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FShamir%2527s%2520secret%2520sharing%2520scheme.html">Shamir’s secret sharing scheme</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FTrapdoor%2520Commitment%2520Schemes.html">Discrete-Logarithm-Based Trapdoor Commitment Schemes</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FThreshold%2520ECDSA.html">Threshold ECDSA</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FPOD-Mini%2520and%2520POD-AS.html">POD-Mini and POD-AS</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FDamgard-Jurik%2520Scheme%2520of%2520Paillier.html">Damgard-Jurik Scheme of Paillier</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FThreshold%2520Paillier%2520Cryptosystem.html">Threshold Paillier Cryptosystem</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FR1CS%2520to%2520QAP.html">R1CS to QAP</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FMimbleWimble.html">Play MimbleWimble with klefki</a></li>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2FGroth16.html">Groth16 in Klefki</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="proxy.php?url=https%3A%2F%2Fgithub.com%2Fautoapi%2Findex.html">API Reference</a></li>
</ul>

<div class="relations">
<h3>Related Topics</h3>
<ul>
  <li><a href="proxy.php?url=https%3A%2F%2Fgithub.com%2Findex.html">Documentation overview</a><ul>
      <li>Previous: <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2Findex.html" title="previous chapter">Welcome to klefki!</a></li>
      <li>Next: <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2FVitalik%2527s%2520stealth%2520addresses%2520Step%2520by%2520Step%2520with%2520klekfi.html" title="next chapter">Paillier’s encryption Scheme</a></li>
  </ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="proxy.php?url=https%3A%2F%2Fgithub.com%2Fsearch.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" />
      <input type="submit" value="Go" />
    </form>
    </div>
</div>
<script>$('#searchbox').show(0);</script>








        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="footer">
      &copy;2019, Ryan Kung.
      
      |
      Powered by <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"http://sphinx-doc.org/">Sphinx" rel="nofollow">http://sphinx-doc.org/">Sphinx 3.4.3</a>
      &amp; <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/bitprophet/alabaster">Alabaster">https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
      
      |
      <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F_sources%2FREADME.md.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>