Added: incubator/milagro/site/www/docs/amcl-overview/index.html
URL: 
http://svn.apache.org/viewvc/incubator/milagro/site/www/docs/amcl-overview/index.html?rev=1860997&view=auto
==============================================================================
--- incubator/milagro/site/www/docs/amcl-overview/index.html (added)
+++ incubator/milagro/site/www/docs/amcl-overview/index.html Tue Jun 11 
00:28:48 2019
@@ -0,0 +1,163 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta 
http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Milagro Crypto 
Library (AMCL) · Apache Milagro</title><meta name="viewport" 
content="width=device-width"/><meta name="generator" 
content="Docusaurus"/><meta name="description" content="&lt;h2&gt;&lt;a 
class=&quot;anchor&quot; aria-hidden=&quot;true&quot; 
id=&quot;introduction&quot;&gt;&lt;/a&gt;&lt;a href=&quot;#introduction&quot; 
aria-hidden=&quot;true&quot; class=&quot;hash-link&quot;&gt;&lt;svg 
class=&quot;hash-link-icon&quot; aria-hidden=&quot;true&quot; 
height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; 
width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 
9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-
 1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Introduction&lt;/h2&gt;
+"/><meta name="docsearch:language" content="en"/><meta property="og:title" 
content="Apache Milagro Crypto Library (AMCL) · Apache Milagro"/><meta 
property="og:type" content="website"/><meta property="og:url" 
content="https://milagro.apache.org/"/><meta property="og:description" 
content="&lt;h2&gt;&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; 
id=&quot;introduction&quot;&gt;&lt;/a&gt;&lt;a href=&quot;#introduction&quot; 
aria-hidden=&quot;true&quot; class=&quot;hash-link&quot;&gt;&lt;svg 
class=&quot;hash-link-icon&quot; aria-hidden=&quot;true&quot; 
height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; 
width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 
9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 1
 1.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Introduction&lt;/h2&gt;
+"/><meta name="twitter:card" content="summary"/><link rel="shortcut icon" 
href="/img/favicon.ico"/><link rel="stylesheet" 
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><link
 rel="alternate" type="application/atom+xml" 
href="https://milagro.apache.org/blog/atom.xml"; title="Apache Milagro Blog ATOM 
Feed"/><link rel="alternate" type="application/rss+xml" 
href="https://milagro.apache.org/blog/feed.xml"; title="Apache Milagro Blog RSS 
Feed"/><script type="text/javascript" 
src="https://buttons.github.io/buttons.js";></script><script 
type="text/javascript" 
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML";></script><script
 src="/js/scrollSpy.js"></script><link rel="stylesheet" 
href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body 
class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div 
class="headerWrapper wrapper"><header><a href="/"><img class="logo" 
src="/img/milagro
 .svg" alt="Apache Milagro"/><h2 class="headerTitleWithLogo">Apache 
Milagro</h2></a><div class="navigationWrapper navigationSlider"><nav 
class="slidingNav"><ul class="nav-site nav-site-internal"><li 
class="siteNavGroupActive"><a href="/docs/milagro-intro" 
target="_self">Docs</a></li><li class=""><a href="/help" 
target="_self">Support</a></li><li class="siteNavGroupActive"><a 
href="/docs/contributor-guide" target="_self">Contributing</a></li><li 
class=""><a href="/blog/" 
target="_self">Status</a></li></ul></nav></div></header></div></div><div 
class="navPusher"><div class="docMainWrapper wrapper"><div class="container 
docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section 
class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div 
class="navToggle" id="navToggler"><div class="hamburger-menu"><div 
class="line1"></div><div class="line2"></div><div 
class="line3"></div></div></div><h2><i>›</i><span>AMCL 
Library</span></h2><div class="tocToggler" id="toc
 Toggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div 
class="navGroup"><h3 class="navGroupCategoryTitle">About Milagro</h3><ul 
class=""><li class="navListItem"><a class="navItem" 
href="/docs/milagro-intro">Milagro Introduction</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-crypto">Milagro 
Crypto</a></li><li class="navListItem"><a class="navItem" 
href="/docs/milagro-protocols">Milagro Protocols</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-design">Milagro 
Design</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">AMCL Library</h3><ul class=""><li 
class="navListItem navListItemActive"><a class="navItem" 
href="/docs/amcl-overview">AMCL Overview</a></li><li class="navListItem"><a 
class="navItem" href="/docs/amcl-c-api">AMCL C API</a></li><li 
class="navListItem"><a class="navItem" href="/docs/amcl-javascript-api">AMCL 
JavaScript API</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCatego
 ryTitle">D-TA Node</h3><ul class=""><li class="navListItem"><a class="navItem" 
href="/docs/d-ta-overview">D-TA Node Overview</a></li><li 
class="navListItem"><a class="navItem" href="/docs/d-ta-api">D-TA Node 
API</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">ZKP-MFA Clients/Servers</h3><ul class=""><li 
class="navListItem"><a class="navItem" href="/docs/zkp-mfa-overview">ZKP-MFA 
Overview</a></li><li class="navListItem"><a class="navItem" 
href="/docs/zkp-mfa-api">ZKP-MFA API</a></li></ul></div><div 
class="navGroup"><h3 class="navGroupCategoryTitle">Project Info</h3><ul 
class=""><li class="navListItem"><a class="navItem" 
href="/docs/contributor-guide">Contributor&#x27;s 
Guide</a></li></ul></div></div></section></div><script>
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, 
className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div 
class="wrapper"><div class="post"><header class="postHeader"><h1 
class="postHeaderTitle">Apache Milagro Crypto Library 
(AMCL)</h1></header><article><div><span><h2><a class="anchor" 
aria-hidden="true" id="introduction"></a><a href="#introduction" 
aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 
aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" 
width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 
1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z"></path></svg></a>Introduction</h2>
+<p>One of the major mysteries in the real-world of crypto is resistance to the 
exploitation of new research ideas. Its not that cryptographic research has 
failed to throw up new ideas that have the potential for commercial 
exploitation -- far from it. But in the real-world, 1970's crypto rules 
supreme, and very little happens that isn't PKI/RSA based. The reasons for this 
are many and varied. However one part of the puzzle might be the 
non-availability of easy-to-use open source cryptographic tools, that do not 
require in depth cryptographic expertise to deploy.</p>
+<p>There are many crypto libraries out there. Many offer a bewildering variety 
of cryptographic primitives, at different levels of security. Many use 
extensive assembly language in order to be as fast as possible. Many are very 
<strong>BIG</strong>, even bloated. Some rely on other external libraries. Many 
were designed by academics for academics, and so are not really suitable for 
commercial use. Many are otherwise excellent, but not written in our favorite 
language.</p>
+<p>The Apache Milagro Crypto Library (AMCL) is different; AMCL is completely 
self-contained, except for the requirement for an external entropy source for 
random number generation.</p>
+<p>AMCL is portable - there is no assembly language. The original version is 
written in C, Java, Javascript, Go and Swift using only generic programming 
constructs, but AMCL is truly multi-lingual, as compatible  versions will be 
available in many other languages. These versions will be identical in that for 
the same inputs they will not only produce the same outputs, but all internal 
calculations will also be the same.</p>
+<p>AMCL is fast, but does not attempt to set speed records (a particular 
academic obsession). There are of course contexts where speed is of the 
essence; for example for a server farm which must handle multiple SSL 
connections, and where a 10% speed increase implies the need for 10% less 
servers, with a a 10% saving on electricity. But in the Internet of Things we 
would suggest that this is less important. In general the speed is expected to 
be &quot;good enough&quot;. However AMCL is small. Some libraries boast of 
having hundreds of thousands of lines of code - AMCL has less than 10,000. AMCL 
takes up the minimum of ROM/RAM resources in order to fit into the smallest 
possible embedded footprint, consistent with other design constraints. It is 
expected that this will be vital for implementations that support security in 
the Internet of Things. AMCL (the C version) only uses stack memory, and is 
thus natively multi-threaded.</p>
+<p>The C version of AMCL is configured at compile time for 16, 32 or 64 bit 
processors, and for a specific elliptic curve. The Java and Javascript versions 
are (obviously) processor agnostic, but the same choices of elliptic curve are 
available.</p>
+<p>AMCL is written with an awareness of the abilities of modern pipelined 
processors. In particular there was an awareness that the unpredictable program 
branch should be avoided at all costs, not only as it slows down the processor, 
but as it may open the door to side-channel attacks. The innocuous looking 
<code>if</code> statement - unless its outcome can be accurately predicted - is 
the enemy of quality crypto software.</p>
+<p>In the sequel we refer to the C version of AMCL, unless otherwise 
specified. We emphasis that all AMCL versions are completely self-contained. No 
external libraries or packages are required to implement all of the supported 
cryptographic functionality (other than for an external entropy source).</p>
+<h2><a class="anchor" aria-hidden="true" id="library-structure"></a><a 
href="#library-structure" aria-hidden="true" class="hash-link"><svg 
class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 
0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 
0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Library Structure</h2>
+<p>The modules that make up AMCL are shown below, with some indication of how 
they interact. Several example APIs will be provided to implement common 
protocols. Note that all interaction with the API is via machine-independent 
endian-indifferent arrays of bytes (a.k.a. octet strings). Therefore the 
underlying workings of the library are invisible to the consumer of its 
services.</p>
+<p><img src="/img/clint.eps.jpg" alt="client"></p>
+<figure>
+  <caption><strong>Figure 1.</strong> AMCL Library  </caption>
+</figure>
+<h2><a class="anchor" aria-hidden="true" id="handling-big-numbers"></a><a 
href="#handling-big-numbers" aria-hidden="true" class="hash-link"><svg 
class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 
0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 
0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Handling <strong>BIG</strong> 
Numbers</h2>
+<h3><a class="anchor" aria-hidden="true" id="representation"></a><a 
href="#representation" aria-hidden="true" class="hash-link"><svg 
class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 
0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 
0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Representation</h3>
+<p>One of the major design decisions is how to represent the 256-bit field 
elements required for the elliptic curve and pairing-based cryptography. Here 
there are two different approaches.</p>
+<p>One is to pack the bits as tightly as possible into computer words. For 
example on a 64-bit computer 256-bit numbers can be stored in just 4 words. 
However to manipulate numbers in this form, even for simple addition, requires 
handling of carry bits if overflow is to be avoided, and a high-level language 
does not have direct access to carry flags. It is possible to emulate the 
flags, but this would be inefficient. In fact this approach is only really 
suitable for an assembly language implementation.</p>
+<p>The alternative idea is to use extra words for the representation, and then 
try to offset the additional cost by taking full advantage of the 
&quot;spare&quot; bits in every word. This idea follows a &quot;corner of the 
literature&quot;<sup class="footnote-ref"><a href="#fn1" 
id="fnref1">[1]</a></sup> which has been promoted by Bernstein and his 
collaborators in several publications. Refer to Figure 2, where each digit of 
the representation is stored as a signed integer which is the size of the 
processor word-length.</p>
+<p>Note that almost all arithmetic takes place modulo a 256-bit prime number, 
the modulus representing the field over which the elliptic curve is defined, 
here denoted as \( p \).</p>
+<p>On 64-bit processors, AMCL represents numbers to the base \( 2^{56} \) in a 
5 element array, the Word Excess is 7 bits, and for a 256-bit modulus the Field 
Excess is 24 bits.</p>
+<p>On 32-bit processors, AMCL represents numbers to the base \( 2^{29} \) in a 
9 element array, the Word Excess is 2 bits, and for a 256-bit modulus the Field 
Excess is 5 bits.</p>
+<p>On 16-bit processors, AMCL represents numbers to the base \( 2^{13} \) in a 
20 element array, the Word Excess is 2 bits, and for a 256-bit modulus the 
Field Excess is 4 bits.</p>
+<p>Such a representation of a 256-bit number is referred to as a 
<strong>BIG</strong>. Addition or subtraction of a pair of 
<strong>BIG</strong>s, results in another <strong>BIG</strong>.</p>
+<p>The Java version uses exactly the same 32-bit representation as above.</p>
+<p>For Javascript (where all numbers are stored as 64-bit floating point with 
a 52-bit mantissa, but mostly manipulated as 32-bit integers), numbers are 
represented to the base \( 2^{24} \) in an 11 element array, the Word Excess is 
7 bits, and the Field Excess for a 256-bit modulus is 8 bits.</p>
+<h3><a class="anchor" aria-hidden="true" id="addition-and-subtraction"></a><a 
href="#addition-and-subtraction" aria-hidden="true" class="hash-link"><svg 
class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 
0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 
0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Addition and Subtraction</h3>
+<p>The existence of a word excess means for example that multiple field 
elements can be added together digit by digit, without processing of carries, 
before overflow can occur.</p>
+<p>Only occasionally will there be a requirement to <em>normalize</em> these 
<em>extended</em> values, that is to force them back into the original format. 
Note that this is independent of the modulus.</p>
+<p>The existence of a field excess means that, independent of the word excess, 
multiple field elements can be added together before it is required to reduce 
the sum with respect to the modulus. In the literature this is referred to as 
lazy, or delayed, reduction. In fact we allow the modulus to be as small as 254 
bits, which obviously increases the field excess.</p>
+<p>Note that these two mechanisms associated with the word excess and the 
field excess (often confused in the literature) operate largely independently 
of each other.</p>
+<p>AMCL has no support for negative numbers. Therefore subtraction will be 
implemented as field negation followed by addition. However a field element \( 
x \) can be negated by simply calculating \( −x = e.p − x \), where \( e \) 
is the current excess associated with \( x \). Therefore subtraction will be 
implemented as field negation followed by addition. In practice it is more 
convenient to round \( e \) up to next highest power of 2, in which case \( e.p 
\) can be calculated by a simple shift.</p>
+<p><img src="/img/words.eps.jpg" alt="client"></p>
+<figure>
+  <caption><strong>Figure 2.</strong> AMCL Library</caption>
+</figure>
+<br>
+Normalization of extended numbers requires the word excess of each digit to be 
shifted right by the number of base bits, and added to the next digit, working 
right to left. Note that when numbers are subtracted digit-by-digit individual 
digits may become negative. However since we are avoiding using the sign bit, 
due to the magic of 2's complement arithmetic, this all works fine without any 
conditional branches.
+<p>Final full reduction of unreduced field elements is carried out using a 
simple shift-and-subtract of the modulus, with one subtraction needed for every 
bit in the actual field excess. Such reductions will rarely be required, as 
they are slow and hard to do in constant time. Ideally it should only be 
required at the end of a complex operation like an elliptic curve point 
multiplication.</p>
+<p>So with careful programming we avoid any unpredictable program branches. 
Since the length of field elements is fixed at compile time, it is expected 
that the compiler will unroll most of the time-critical loops. In any case the 
conditional branch required at the foot of a fixed-size loop can be accurately 
predicted by modern hardware.</p>
+<p>Worst case field excesses are easy to calculate. If two elements \( a \) 
and \( b \) are to be added, and if their current field excesses are \( e_{a} 
\) and \( e_{b} \) respectively, then clearly their sum will have a worst-case 
field excess of \( e_{a}+e_{b} \). By careful programming and choice of number 
base, full reductions can be largely eliminated<sup class="footnote-ref"><a 
href="#fn2" id="fnref2">[2]</a></sup>.</p>
+<h3><a class="anchor" aria-hidden="true" 
id="multiplication-and-reduction"></a><a href="#multiplication-and-reduction" 
aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 
aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" 
width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 
1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z"></path></svg></a>Multiplication and Reduction</h3>
+<p>To support multiplication of <strong>BIG</strong>s, we will require a 
double-length <strong><em>DBIG</em></strong> type. Also the partial products 
that arise in the process of long multiplication will require a double-length 
data type. Fortunately many popular C compilers, like Gnu GCC, always support 
an integer type that is double the native word-length. For Java the 
&quot;int&quot; type is 32-bits and there is a double-length &quot;long&quot; 
type which is 64-bit. Of course for Javascript a double length type is not 
possible, and so the partial products must be accommodated within the 52-bit 
mantissa.</p>
+<p>Multiprecision multiplication is performed column by column, propagating 
the carries, working from right-to-left, but using the fast method described 
in<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>. At the 
foot of each column the total is split into the sum for that column, and the 
carry to the next column. If the numbers are normalized prior to the 
multiplication, then with the word excesses that we have chosen, this will not 
result in overflow. The DBIG product will be automatically normalized as a 
result of this process. Squaring can be done in a similar fashion but at a 
slightly lower cost.</p>
+<p>The method used for full reduction of a <strong>DBIG</strong> back to a 
<strong>BIG</strong> depends on the form of the modulus. We choose to support 
three distinct types of modulus, (a) pseudo Mersenne of the form \( 2^n-c \) 
where \( c \) is small and $n$ is the size of the modulus in bits, (b) 
Montgomery-friendly of the form \( k.2^n-1 \), and (c) moduli of no special 
form. For cases (b) and (c) we convert all field elements to Montgomery's \( n 
\)-residue form, and use Montgomery's fast method for modular reduction.</p>
+<p>In all cases the <strong>DBIG</strong> number to be reduced \( y \) must be 
in the range \( 0&lt;y&lt;pR \) (a requirement of Montgomery's method), and the 
result \( x \) is guaranteed to be in the range \( 0&lt;x&lt;2p \) , where \( 
R=2^{256+FE} \) for a 256-bit modulus. Note that the <strong>BIG</strong> 
result will be (nearly) fully reduced. The fact than we allow \( x \) to be 
larger than \( p \) means that we can avoid the notorious Montgomery 
&quot;final subtraction&quot;. Independent of the method used for reduction, we 
have found that it is much easier to obtain reduction in constant time to a 
value less than \( 2p \), than a full reduction to less than \( p \).</p>
+<p>Observe how unreduced numbers involved in complex calculations tend to be 
(nearly fully) reduced if they are involved in a modular multiplication. So for 
example if field element \( x \) has a large field excess, and if we calculate 
\( x=x.y \), then as long as the unreduced product is less than \( pR \), the 
result will be a nearly fully reduced \( x \). So in many cases there is a 
natural tendency for field excesses not to grow without limit, and not to 
overflow, without requiring explicit action on our part.</p>
+<p>Consider now a sequence of code that adds, subtracts and multiplies field 
elements, as might arise in elliptic curve additions and doublings. Assume that 
the code has been analysed and that normalisation code has been inserted where 
needed. Assume that the reduction code that activates if there is a possibility 
of an element overflowing its field excess, while present, never in fact is 
triggered (due to the behaviour described above). Then we assert that once a 
program has initialised no unpredicted branches will occur during field 
arithmetic, and therefore the code will execute in constant time.</p>
+<h2><a class="anchor" aria-hidden="true" 
id="extension-field-arithmetic"></a><a href="#extension-field-arithmetic" 
aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 
aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" 
width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 
1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z"></path></svg></a>Extension Field arithmetic</h2>
+<p>To support cryptographic pairings we will need support for extension 
fields. We use a towering of extensions as required for BN curves and as 
required for higher security BLS curves. An element of the quadratic extension 
field will be represented as \( f=a+ib \), where \( i \) is the square root of 
the quadratic non-residue -1. To add, subtract and multiply them we use the 
obvious methods.</p>
+<p>However for negation we can construct \( -f=-a-ib \) as \( 
b-(a+b)+i.(a-(a+b) \) which requires only one base field negation. A similar 
idea can be used recursively for higher order extensions, so that only one base 
field negation is ever required.</p>
+<h2><a class="anchor" aria-hidden="true" id="elliptic-curves"></a><a 
href="#elliptic-curves" aria-hidden="true" class="hash-link"><svg 
class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 
0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 
0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Elliptic Curves</h2>
+<p>Three types of Elliptic curve are supported for the implementation of 
Elliptic Curve Cryptography (ECC), but curves are limited to popular families 
that support faster implementation. Weierstrass curves are supported using the 
Short Weierstrass representation:</p>
+<p>$$y^2=x^3+Ax+B$$</p>
+<p>where \( A=0 \) or \( A=-3 \). Edwards curves are supported using both 
regular and twisted Edwards format:</p>
+<p>$$Ax^2+y^2=1+Bx^2y^2$$</p>
+<p>where \( A=1 \) or \( A=-1 \). Montgomery curves are represented as:</p>
+<p>$$y^2=x^3+Ax^2+x$$</p>
+<p>where \( A \) must be small. As mentioned in the introduction, in all cases 
we use exception-free formulae if available, as this facilitates constant time 
imple- mentation, even if this invokes a significant performance penalty.</p>
+<p>In the particular case of elliptic curve point multiplication, there are 
potentially a myriad of very dangerous side-channel attacks that arise from 
using the classic double-and-add algorithm and its variants. Vulnerabilities 
arise if branches are taken that depend on secret bits, or if data is even 
accessed using secret values as indices. Many types of counter-measures have 
been suggested. The simplest solution is to use a constant-time algorithm like 
the Montgomery ladder, which has a very simple structure, uses very little  
memory and has no key-bit-dependent branches.</p>
+<p>If using a Montgomery representation of the elliptic curve the Montgomery 
ladder is in fact the optimal algorithm for point multiplication. For other 
representations we use a fixed-sized signed window method.</p>
+<p>AMCL has built-in support for most standardised elliptic curves, along with 
many curves that have been proposed for standardisation. Specifically it 
supports the NIST256 curve, the well known Curve25519, the 256-bit Brain- pool 
curve, the ANSSI curve, and six NUMS (Nothing-Up-My-Sleeve) curves proposed by 
Bos et al. At higher levels of security the NIST384 and NIST521 curves are 
supported, also Curve41417 as well as the Goldilocks curve, and our own HiFive 
curve.
+Some of these proposals support only a Weierstrass representation, but many 
also allow an Edwards or Montgomery form. Tools are provided to allow easy 
integration of more curves.</p>
+<h2><a class="anchor" aria-hidden="true" 
id="support-for-classic-finite-field-methods"></a><a 
href="#support-for-classic-finite-field-methods" aria-hidden="true" 
class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" 
version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 
9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Support for classic Finite Field 
Methods</h2>
+<p>Before Elliptic Curves, cryptography depended on methods based on simple 
finite fields. The most famous of these would be the well known RSA method. 
These methods have the advantage of being effectively parameterless, and 
therefore the issue of trust in parameters that arises for elliptic curves, is 
not an issue.</p>
+<p>However these methods are subject to index calculus based methods of 
cryptanalysis, and so fields and keys are typically much larger. So how to 
support for example a 2048-bit implementation of RSA based on a library 
designed for optimized 256-bit operations? The idea is simple; use AMCL as a 
virtual 256-bit machine, and build 2048-bit arithmetic on top of that.</p>
+<p>And to claw back some decent performance use the Karatsuba method so that 
for example 2048-bit multiplication recurses efficiently right down to 256-bit 
operations. Of course the downside of the Karatsuba method is that while it 
saves on multiplications, the number of additions and subtractions is greatly 
increased.  However the existence of generous word excesses in our 
representation makes this less of a problem, as most additions can be carried 
out without normalization.</p>
+<p>Secret key operations like RSA decryption use the Montgomery ladder to 
achieve side-channel-attack resistance.</p>
+<p>The implementation can currently support \( 1024.2^n \) bit fields, so for 
example 2048-bit RSA can be used to get reasonably close to the AES-128-bit 
level of security, and if desired 4096 bit RSA can be used to comfortably 
exceed it.</p>
+<p>Note that this code is supported independently of the elliptic curve code. 
So for example RSA and ECC can be run together within a single application.</p>
+<p>However we regard these methods as &quot;legacy&quot; as in our view ECC 
based methods are a much better fit for the IoT.</p>
+<h2><a class="anchor" aria-hidden="true" id="multi-lingual-support"></a><a 
href="#multi-lingual-support" aria-hidden="true" class="hash-link"><svg 
class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 
0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 
0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Multi-Lingual support</h2>
+<p>It is a <strong>BIG</strong> ask to develop and maintain multiple versions 
of a crypto library written in radically different languages such as C, Java, 
Javascript, Go and Swift. This has discouraged the use of language specific 
methods (which are in any case of little relevance here), and strongly 
encouraged the use of simple, generic computer language constructs.</p>
+<p>This approach brings a surprising bonus: AMCL can be automatically 
converted to many other languages using available translator tools. For example 
Tangible Software Solutions market a Java to C# converter. This generated an 
efficient fully functional C# version of AMCL within minutes. The same company 
market a Java to Visual Basic converter.</p>
+<p>Google have a Java to Objective C converter specifically designed to 
convert Android apps developed in Java, to iOS apps written in Objective C.</p>
+<p>Of course not all languages can be supported in this way, so support for 
some will be developed manually. In particular a Rust version is currently 
under development.</p>
+<h2><a class="anchor" aria-hidden="true" id="discussion"></a><a 
href="#discussion" aria-hidden="true" class="hash-link"><svg 
class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 
0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 
0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 
3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 
9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 
0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 
3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Discussion</h2>
+<p>We found in our code that, with few exceptions, reductions due to possible 
overflow of the field excess of a <strong>BIG</strong> were very rare, 
especially for the 64-bit version of the library. Similarly normalization was 
rarely needed for the 64-bit code. This is due to the much greater excesses 
that apply in the 64-bit representation. In some experiments we calculated 
thousands of random pairings, and reduction due to field excess overflow 
detection never happened.</p>
+<p>In general in developing AMCL we tried to use optimal methods, without 
going to what we (very subjectively) regarded as extremes in order to maximize 
performance.  Algorithms that require less memory were generally preferred if 
the impact on performance was not large. Some optimizations, while perfectly 
valid, are hard to implement without having a significant impact on program 
readability and maintainability. Deciding which optimizations to use and which 
to reject (on the grounds of code size and negative impact on code
+readability and maintainability) is admittedly rather arbitrary!</p>
+<p>One notable omission from AMCL is the use of pre-computation on fixed 
parameters in order to speed up certain calculations. We try to justify this, 
rather unconvincingly, by pointing out that pre-computation must of necessity 
increase code size. Furthermore such methods are more sensitive to side-channel 
attacks and much of their speed advantage will be lost if they are to be fully 
side-channel protected. Also pre-computation on secret values clearly increases 
the amount of secret data that needs to be protected.</p>
+<p>However the development roadmap view might change in later versions 
depending on the project supporters in-the-field experiences of using AMCL.</p>
+<hr>
+
+    <div class="admonition admonition-note">
+      <div class="admonition-heading">
+        <h5><div class="admonition-icon"><svg 
xmlns="http://www.w3.org/2000/svg"; width="14" height="16" viewBox="0 0 14 
16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 
1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 
.52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 
0-.52-.11-.7-.3zM8 
7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27
 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 
5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 
.98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"/></svg></div>  See an 
error in this documentation?</h5>
+      </div>
+      <div class="admonition-content">
+    <p>Submit a pull request on the development branch of <a 
href="https://github.com/apache/incubator-milagro";>Milagro Website Repo</a>.</p>
+</div></div><!--
+Supported admonition types are: caution, note, important, tip, warning.
+--><hr class="footnotes-sep">
+<section class="footnotes">
+<ol class="footnotes-list">
+<li id="fn1"  class="footnote-item"><p><a 
href="http://eprint.iacr.org/2014/526";>Curve41417 Karatsuba revisited</a> <a 
href="#fnref1" class="footnote-backref">↩</a></p>
+</li>
+<li id="fn2"  class="footnote-item"><p><a 
href="http://eprint.iacr.org/2017/437";>Slothful Reduction</a> <a href="#fnref2" 
class="footnote-backref">↩</a></p>
+</li>
+<li id="fn3"  class="footnote-item"><p><a 
href="http://eprint.iacr.org/2015/1247";>Missing a trick: Karatsuba 
variations</a> <a href="#fnref3" class="footnote-backref">↩</a></p>
+</li>
+</ol>
+</section>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev 
button" href="/docs/milagro-design"><span class="arrow-prev">← 
</span><span>Milagro Design</span></a><a class="docs-next button" 
href="/docs/amcl-c-api"><span>AMCL C API</span><span class="arrow-next"> 
→</span></a></div></div></div><nav class="onPageNav"><ul 
class="toc-headings"><li><a href="#introduction">Introduction</a></li><li><a 
href="#library-structure">Library Structure</a></li><li><a 
href="#handling-big-numbers">Handling <strong>BIG</strong> Numbers</a><ul 
class="toc-headings"><li><a 
href="#representation">Representation</a></li><li><a 
href="#addition-and-subtraction">Addition and Subtraction</a></li><li><a 
href="#multiplication-and-reduction">Multiplication and 
Reduction</a></li></ul></li><li><a href="#extension-field-arithmetic">Extension 
Field arithmetic</a></li><li><a href="#elliptic-curves">Elliptic 
Curves</a></li><li><a href="#support-for-classic-finite-field-methods">Support 
for clas
 sic Finite Field Methods</a></li><li><a 
href="#multi-lingual-support">Multi-Lingual support</a></li><li><a 
href="#discussion">Discussion</a></li></ul></nav></div><footer 
class="nav-footer" id="footer"><section class="sitemap"><a href="/" 
class="nav-home"><img src="/img/milagro.svg" alt="Apache Milagro" width="50" 
height="100"/></a><div><h5>Docs</h5><a href="/docs/milagro-intro.html">Milagro 
Intro</a><a href="/docs/amcl-overview.html">Apache Milagro Crypto Library</a><a 
href="/docs/d-ta-overview.html">Decentralized Trust Authority</a><a 
href="/docs/zkp-mfa-overview.html">Zero Knowledge Proof 
MFA</a></div><div><h5>Community</h5><a href="../help">Support</a><a 
href="../docs/contributor-guide">Contributing</a><a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115529045";
 target="_blank" rel="noreferrer noopener">Developer Wiki</a><a 
href="https://twitter.com/apachemilagro?lang=en"; target="_blank" 
rel="noreferrer noopener">Twitter</a></div><div><h5>More</h5><a href=
 "/blog">Status</a><a 
href="https://github.com/apache/incubator-milagro-crypto";>GitHub</a><a 
class="github-button" href="https://github.com/apache/incubator-milagro"; 
data-icon="octicon-star" 
data-count-href="/apache/incubator-milagro-crypto/stargazers" 
data-show-count="true" data-count-aria-label="# stargazers on GitHub" 
aria-label="Star this project on GitHub">Star</a></div></section><a 
href="https://apache.org"; target="_blank" rel="noreferrer noopener" 
class="fbOpenSource"><img src="/img/oss_logo.png" alt="Apache Incubator" 
width="170" height="45"/></a><section class="copyright">Copyright © 2019  The 
Apache Software Foundation. Apache Milagro, Milagro, Apache, the Apache 
feather, and the Apache Milagro project logo are either registered trademarks 
or trademarks of the Apache Software 
Foundation.</section></footer></div></body></html>
\ No newline at end of file

Added: incubator/milagro/site/www/docs/contributor-guide.html
URL: 
http://svn.apache.org/viewvc/incubator/milagro/site/www/docs/contributor-guide.html?rev=1860997&view=auto
==============================================================================
--- incubator/milagro/site/www/docs/contributor-guide.html (added)
+++ incubator/milagro/site/www/docs/contributor-guide.html Tue Jun 11 00:28:48 
2019
@@ -0,0 +1,64 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta 
http-equiv="X-UA-Compatible" content="IE=edge"/><title>Contributor&#x27;s Guide 
· Apache Milagro</title><meta name="viewport" 
content="width=device-width"/><meta name="generator" 
content="Docusaurus"/><meta name="description" content="&lt;h1&gt;&lt;a 
class=&quot;anchor&quot; aria-hidden=&quot;true&quot; 
id=&quot;become-a-contributor&quot;&gt;&lt;/a&gt;&lt;a 
href=&quot;#become-a-contributor&quot; aria-hidden=&quot;true&quot; 
class=&quot;hash-link&quot;&gt;&lt;svg class=&quot;hash-link-icon&quot; 
aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; 
viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path 
fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.
 25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Become a contributor&lt;/h1&gt;
+"/><meta name="docsearch:language" content="en"/><meta property="og:title" 
content="Contributor&#x27;s Guide · Apache Milagro"/><meta property="og:type" 
content="website"/><meta property="og:url" 
content="https://milagro.apache.org/"/><meta property="og:description" 
content="&lt;h1&gt;&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; 
id=&quot;become-a-contributor&quot;&gt;&lt;/a&gt;&lt;a 
href=&quot;#become-a-contributor&quot; aria-hidden=&quot;true&quot; 
class=&quot;hash-link&quot;&gt;&lt;svg class=&quot;hash-link-icon&quot; 
aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; 
viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path 
fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 
1.84-2 3.25
 C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Become a contributor&lt;/h1&gt;
+"/><meta name="twitter:card" content="summary"/><link rel="shortcut icon" 
href="/img/favicon.ico"/><link rel="stylesheet" 
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><link
 rel="alternate" type="application/atom+xml" 
href="https://milagro.apache.org/blog/atom.xml"; title="Apache Milagro Blog ATOM 
Feed"/><link rel="alternate" type="application/rss+xml" 
href="https://milagro.apache.org/blog/feed.xml"; title="Apache Milagro Blog RSS 
Feed"/><script type="text/javascript" 
src="https://buttons.github.io/buttons.js";></script><script 
type="text/javascript" 
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML";></script><script
 src="/js/scrollSpy.js"></script><link rel="stylesheet" 
href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body 
class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div 
class="headerWrapper wrapper"><header><a href="/"><img class="logo" 
src="/img/milagro
 .svg" alt="Apache Milagro"/><h2 class="headerTitleWithLogo">Apache 
Milagro</h2></a><div class="navigationWrapper navigationSlider"><nav 
class="slidingNav"><ul class="nav-site nav-site-internal"><li 
class="siteNavGroupActive"><a href="/docs/milagro-intro" 
target="_self">Docs</a></li><li class=""><a href="/help" 
target="_self">Support</a></li><li class="siteNavGroupActive 
siteNavItemActive"><a href="/docs/contributor-guide" 
target="_self">Contributing</a></li><li class=""><a href="/blog/" 
target="_self">Status</a></li></ul></nav></div></header></div></div><div 
class="navPusher"><div class="docMainWrapper wrapper"><div class="container 
docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section 
class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div 
class="navToggle" id="navToggler"><div class="hamburger-menu"><div 
class="line1"></div><div class="line2"></div><div 
class="line3"></div></div></div><h2><i>›</i><span>Project 
Info</span></h2><div class="t
 ocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div 
class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">About 
Milagro</h3><ul class=""><li class="navListItem"><a class="navItem" 
href="/docs/milagro-intro">Milagro Introduction</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-crypto">Milagro 
Crypto</a></li><li class="navListItem"><a class="navItem" 
href="/docs/milagro-protocols">Milagro Protocols</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-design">Milagro 
Design</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">AMCL Library</h3><ul class=""><li 
class="navListItem"><a class="navItem" href="/docs/amcl-overview">AMCL 
Overview</a></li><li class="navListItem"><a class="navItem" 
href="/docs/amcl-c-api">AMCL C API</a></li><li class="navListItem"><a 
class="navItem" href="/docs/amcl-javascript-api">AMCL JavaScript 
API</a></li></ul></div><div class="navGroup"><h3 class="navGroupCatego
 ryTitle">D-TA Node</h3><ul class=""><li class="navListItem"><a class="navItem" 
href="/docs/d-ta-overview">D-TA Node Overview</a></li><li 
class="navListItem"><a class="navItem" href="/docs/d-ta-api">D-TA Node 
API</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">ZKP-MFA Clients/Servers</h3><ul class=""><li 
class="navListItem"><a class="navItem" href="/docs/zkp-mfa-overview">ZKP-MFA 
Overview</a></li><li class="navListItem"><a class="navItem" 
href="/docs/zkp-mfa-api">ZKP-MFA API</a></li></ul></div><div 
class="navGroup"><h3 class="navGroupCategoryTitle">Project Info</h3><ul 
class=""><li class="navListItem navListItemActive"><a class="navItem" 
href="/docs/contributor-guide">Contributor&#x27;s 
Guide</a></li></ul></div></div></section></div><script>
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, 
className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div 
class="wrapper"><div class="post"><header class="postHeader"><h1 
class="postHeaderTitle">Contributor&#x27;s 
Guide</h1></header><article><div><span><h1><a class="anchor" aria-hidden="true" 
id="become-a-contributor"></a><a href="#become-a-contributor" 
aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 
aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" 
width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 
1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z"></path></svg></a>Become a contributor</h1>
+<p>Keeping with our spartan theme, for now, it's best to send an email to <a 
href="mailto:[email protected]?Subject=Subscribe"; 
target="_top">dev-subscribe @ milagro.apache.org</a> to join our mailing 
list.</p>
+<p>More information will be available here shortly.</p>
+<!--
+Supported admonition types are: caution, note, important, tip, warning.
+--></span></div></article></div><div class="docs-prevnext"><a class="docs-prev 
button" href="/docs/zkp-mfa-api"><span class="arrow-prev">← 
</span><span>ZKP-MFA API</span></a><a class="docs-next button" 
href="/help"><span>Next</span><span class="arrow-next"> 
→</span></a></div></div></div><nav class="onPageNav"></nav></div><footer 
class="nav-footer" id="footer"><section class="sitemap"><a href="/" 
class="nav-home"><img src="/img/milagro.svg" alt="Apache Milagro" width="50" 
height="100"/></a><div><h5>Docs</h5><a href="/docs/milagro-intro.html">Milagro 
Intro</a><a href="/docs/amcl-overview.html">Apache Milagro Crypto Library</a><a 
href="/docs/d-ta-overview.html">Decentralized Trust Authority</a><a 
href="/docs/zkp-mfa-overview.html">Zero Knowledge Proof 
MFA</a></div><div><h5>Community</h5><a href="../help">Support</a><a 
href="../docs/contributor-guide">Contributing</a><a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115529045";
 target="_blank" rel="noref
 errer noopener">Developer Wiki</a><a 
href="https://twitter.com/apachemilagro?lang=en"; target="_blank" 
rel="noreferrer noopener">Twitter</a></div><div><h5>More</h5><a 
href="/blog">Status</a><a 
href="https://github.com/apache/incubator-milagro-crypto";>GitHub</a><a 
class="github-button" href="https://github.com/apache/incubator-milagro"; 
data-icon="octicon-star" 
data-count-href="/apache/incubator-milagro-crypto/stargazers" 
data-show-count="true" data-count-aria-label="# stargazers on GitHub" 
aria-label="Star this project on GitHub">Star</a></div></section><a 
href="https://apache.org"; target="_blank" rel="noreferrer noopener" 
class="fbOpenSource"><img src="/img/oss_logo.png" alt="Apache Incubator" 
width="170" height="45"/></a><section class="copyright">Copyright © 2019  The 
Apache Software Foundation. Apache Milagro, Milagro, Apache, the Apache 
feather, and the Apache Milagro project logo are either registered trademarks 
or trademarks of the Apache Software Foundation.</section></foot
 er></div></body></html>
\ No newline at end of file

Added: incubator/milagro/site/www/docs/contributor-guide/index.html
URL: 
http://svn.apache.org/viewvc/incubator/milagro/site/www/docs/contributor-guide/index.html?rev=1860997&view=auto
==============================================================================
--- incubator/milagro/site/www/docs/contributor-guide/index.html (added)
+++ incubator/milagro/site/www/docs/contributor-guide/index.html Tue Jun 11 
00:28:48 2019
@@ -0,0 +1,64 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta 
http-equiv="X-UA-Compatible" content="IE=edge"/><title>Contributor&#x27;s Guide 
· Apache Milagro</title><meta name="viewport" 
content="width=device-width"/><meta name="generator" 
content="Docusaurus"/><meta name="description" content="&lt;h1&gt;&lt;a 
class=&quot;anchor&quot; aria-hidden=&quot;true&quot; 
id=&quot;become-a-contributor&quot;&gt;&lt;/a&gt;&lt;a 
href=&quot;#become-a-contributor&quot; aria-hidden=&quot;true&quot; 
class=&quot;hash-link&quot;&gt;&lt;svg class=&quot;hash-link-icon&quot; 
aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; 
viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path 
fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.
 25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Become a contributor&lt;/h1&gt;
+"/><meta name="docsearch:language" content="en"/><meta property="og:title" 
content="Contributor&#x27;s Guide · Apache Milagro"/><meta property="og:type" 
content="website"/><meta property="og:url" 
content="https://milagro.apache.org/"/><meta property="og:description" 
content="&lt;h1&gt;&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; 
id=&quot;become-a-contributor&quot;&gt;&lt;/a&gt;&lt;a 
href=&quot;#become-a-contributor&quot; aria-hidden=&quot;true&quot; 
class=&quot;hash-link&quot;&gt;&lt;svg class=&quot;hash-link-icon&quot; 
aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; 
viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path 
fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 
1.84-2 3.25
 C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Become a contributor&lt;/h1&gt;
+"/><meta name="twitter:card" content="summary"/><link rel="shortcut icon" 
href="/img/favicon.ico"/><link rel="stylesheet" 
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><link
 rel="alternate" type="application/atom+xml" 
href="https://milagro.apache.org/blog/atom.xml"; title="Apache Milagro Blog ATOM 
Feed"/><link rel="alternate" type="application/rss+xml" 
href="https://milagro.apache.org/blog/feed.xml"; title="Apache Milagro Blog RSS 
Feed"/><script type="text/javascript" 
src="https://buttons.github.io/buttons.js";></script><script 
type="text/javascript" 
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML";></script><script
 src="/js/scrollSpy.js"></script><link rel="stylesheet" 
href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body 
class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div 
class="headerWrapper wrapper"><header><a href="/"><img class="logo" 
src="/img/milagro
 .svg" alt="Apache Milagro"/><h2 class="headerTitleWithLogo">Apache 
Milagro</h2></a><div class="navigationWrapper navigationSlider"><nav 
class="slidingNav"><ul class="nav-site nav-site-internal"><li 
class="siteNavGroupActive"><a href="/docs/milagro-intro" 
target="_self">Docs</a></li><li class=""><a href="/help" 
target="_self">Support</a></li><li class="siteNavGroupActive 
siteNavItemActive"><a href="/docs/contributor-guide" 
target="_self">Contributing</a></li><li class=""><a href="/blog/" 
target="_self">Status</a></li></ul></nav></div></header></div></div><div 
class="navPusher"><div class="docMainWrapper wrapper"><div class="container 
docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section 
class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div 
class="navToggle" id="navToggler"><div class="hamburger-menu"><div 
class="line1"></div><div class="line2"></div><div 
class="line3"></div></div></div><h2><i>›</i><span>Project 
Info</span></h2><div class="t
 ocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div 
class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">About 
Milagro</h3><ul class=""><li class="navListItem"><a class="navItem" 
href="/docs/milagro-intro">Milagro Introduction</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-crypto">Milagro 
Crypto</a></li><li class="navListItem"><a class="navItem" 
href="/docs/milagro-protocols">Milagro Protocols</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-design">Milagro 
Design</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">AMCL Library</h3><ul class=""><li 
class="navListItem"><a class="navItem" href="/docs/amcl-overview">AMCL 
Overview</a></li><li class="navListItem"><a class="navItem" 
href="/docs/amcl-c-api">AMCL C API</a></li><li class="navListItem"><a 
class="navItem" href="/docs/amcl-javascript-api">AMCL JavaScript 
API</a></li></ul></div><div class="navGroup"><h3 class="navGroupCatego
 ryTitle">D-TA Node</h3><ul class=""><li class="navListItem"><a class="navItem" 
href="/docs/d-ta-overview">D-TA Node Overview</a></li><li 
class="navListItem"><a class="navItem" href="/docs/d-ta-api">D-TA Node 
API</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">ZKP-MFA Clients/Servers</h3><ul class=""><li 
class="navListItem"><a class="navItem" href="/docs/zkp-mfa-overview">ZKP-MFA 
Overview</a></li><li class="navListItem"><a class="navItem" 
href="/docs/zkp-mfa-api">ZKP-MFA API</a></li></ul></div><div 
class="navGroup"><h3 class="navGroupCategoryTitle">Project Info</h3><ul 
class=""><li class="navListItem navListItemActive"><a class="navItem" 
href="/docs/contributor-guide">Contributor&#x27;s 
Guide</a></li></ul></div></div></section></div><script>
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, 
className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div 
class="wrapper"><div class="post"><header class="postHeader"><h1 
class="postHeaderTitle">Contributor&#x27;s 
Guide</h1></header><article><div><span><h1><a class="anchor" aria-hidden="true" 
id="become-a-contributor"></a><a href="#become-a-contributor" 
aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 
aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" 
width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 
3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 
5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 
2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 
1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 
6z"></path></svg></a>Become a contributor</h1>
+<p>Keeping with our spartan theme, for now, it's best to send an email to <a 
href="mailto:[email protected]?Subject=Subscribe"; 
target="_top">dev-subscribe @ milagro.apache.org</a> to join our mailing 
list.</p>
+<p>More information will be available here shortly.</p>
+<!--
+Supported admonition types are: caution, note, important, tip, warning.
+--></span></div></article></div><div class="docs-prevnext"><a class="docs-prev 
button" href="/docs/zkp-mfa-api"><span class="arrow-prev">← 
</span><span>ZKP-MFA API</span></a><a class="docs-next button" 
href="/help"><span>Next</span><span class="arrow-next"> 
→</span></a></div></div></div><nav class="onPageNav"></nav></div><footer 
class="nav-footer" id="footer"><section class="sitemap"><a href="/" 
class="nav-home"><img src="/img/milagro.svg" alt="Apache Milagro" width="50" 
height="100"/></a><div><h5>Docs</h5><a href="/docs/milagro-intro.html">Milagro 
Intro</a><a href="/docs/amcl-overview.html">Apache Milagro Crypto Library</a><a 
href="/docs/d-ta-overview.html">Decentralized Trust Authority</a><a 
href="/docs/zkp-mfa-overview.html">Zero Knowledge Proof 
MFA</a></div><div><h5>Community</h5><a href="../help">Support</a><a 
href="../docs/contributor-guide">Contributing</a><a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115529045";
 target="_blank" rel="noref
 errer noopener">Developer Wiki</a><a 
href="https://twitter.com/apachemilagro?lang=en"; target="_blank" 
rel="noreferrer noopener">Twitter</a></div><div><h5>More</h5><a 
href="/blog">Status</a><a 
href="https://github.com/apache/incubator-milagro-crypto";>GitHub</a><a 
class="github-button" href="https://github.com/apache/incubator-milagro"; 
data-icon="octicon-star" 
data-count-href="/apache/incubator-milagro-crypto/stargazers" 
data-show-count="true" data-count-aria-label="# stargazers on GitHub" 
aria-label="Star this project on GitHub">Star</a></div></section><a 
href="https://apache.org"; target="_blank" rel="noreferrer noopener" 
class="fbOpenSource"><img src="/img/oss_logo.png" alt="Apache Incubator" 
width="170" height="45"/></a><section class="copyright">Copyright © 2019  The 
Apache Software Foundation. Apache Milagro, Milagro, Apache, the Apache 
feather, and the Apache Milagro project logo are either registered trademarks 
or trademarks of the Apache Software Foundation.</section></foot
 er></div></body></html>
\ No newline at end of file

Added: incubator/milagro/site/www/docs/d-ta-api.html
URL: 
http://svn.apache.org/viewvc/incubator/milagro/site/www/docs/d-ta-api.html?rev=1860997&view=auto
==============================================================================
--- incubator/milagro/site/www/docs/d-ta-api.html (added)
+++ incubator/milagro/site/www/docs/d-ta-api.html Tue Jun 11 00:28:48 2019
@@ -0,0 +1,79 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta 
http-equiv="X-UA-Compatible" content="IE=edge"/><title>D-TA Node API · Apache 
Milagro</title><meta name="viewport" content="width=device-width"/><meta 
name="generator" content="Docusaurus"/><meta name="description" content="
+    &lt;div class=&quot;admonition admonition-tip&quot;&gt;
+      &lt;div class=&quot;admonition-heading&quot;&gt;
+        &lt;h5&gt;&lt;div class=&quot;admonition-icon&quot;&gt;&lt;svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;12&quot; 
height=&quot;16&quot; viewBox=&quot;0 0 12 16&quot;&gt;&lt;path 
fill-rule=&quot;evenodd&quot; d=&quot;M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 
3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 
0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 
3.23-.02.05-.02.11-.02.17H5c0-.06 
0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 
5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 
.66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 
2s-2.27-.86-2.5-2z&quot;/&gt;&lt;/svg&gt;&lt;/div&gt;  WE NEED HELP 
DOCUMENTING!&lt;/h5&gt;
+      &lt;/div&gt;
+      &lt;div class=&quot;admonition-content&quot;&gt;
+    &lt;/div&gt;&lt;/div&gt;"/><meta name="docsearch:language" 
content="en"/><meta property="og:title" content="D-TA Node API · Apache 
Milagro"/><meta property="og:type" content="website"/><meta property="og:url" 
content="https://milagro.apache.org/"/><meta property="og:description" content="
+    &lt;div class=&quot;admonition admonition-tip&quot;&gt;
+      &lt;div class=&quot;admonition-heading&quot;&gt;
+        &lt;h5&gt;&lt;div class=&quot;admonition-icon&quot;&gt;&lt;svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;12&quot; 
height=&quot;16&quot; viewBox=&quot;0 0 12 16&quot;&gt;&lt;path 
fill-rule=&quot;evenodd&quot; d=&quot;M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 
3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 
0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 
3.23-.02.05-.02.11-.02.17H5c0-.06 
0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 
5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 
.66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 
2s-2.27-.86-2.5-2z&quot;/&gt;&lt;/svg&gt;&lt;/div&gt;  WE NEED HELP 
DOCUMENTING!&lt;/h5&gt;
+      &lt;/div&gt;
+      &lt;div class=&quot;admonition-content&quot;&gt;
+    &lt;/div&gt;&lt;/div&gt;"/><meta name="twitter:card" 
content="summary"/><link rel="shortcut icon" href="/img/favicon.ico"/><link 
rel="stylesheet" 
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><link
 rel="alternate" type="application/atom+xml" 
href="https://milagro.apache.org/blog/atom.xml"; title="Apache Milagro Blog ATOM 
Feed"/><link rel="alternate" type="application/rss+xml" 
href="https://milagro.apache.org/blog/feed.xml"; title="Apache Milagro Blog RSS 
Feed"/><script type="text/javascript" 
src="https://buttons.github.io/buttons.js";></script><script 
type="text/javascript" 
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML";></script><script
 src="/js/scrollSpy.js"></script><link rel="stylesheet" 
href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body 
class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div 
class="headerWrapper wrapper"><header><a href="/"><img cl
 ass="logo" src="/img/milagro.svg" alt="Apache Milagro"/><h2 
class="headerTitleWithLogo">Apache Milagro</h2></a><div 
class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul 
class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a 
href="/docs/milagro-intro" target="_self">Docs</a></li><li class=""><a 
href="/help" target="_self">Support</a></li><li class="siteNavGroupActive"><a 
href="/docs/contributor-guide" target="_self">Contributing</a></li><li 
class=""><a href="/blog/" 
target="_self">Status</a></li></ul></nav></div></header></div></div><div 
class="navPusher"><div class="docMainWrapper wrapper"><div class="container 
docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section 
class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div 
class="navToggle" id="navToggler"><div class="hamburger-menu"><div 
class="line1"></div><div class="line2"></div><div 
class="line3"></div></div></div><h2><i>›</i><span>D-TA Node</span></h2><div c
 lass="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div 
class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">About 
Milagro</h3><ul class=""><li class="navListItem"><a class="navItem" 
href="/docs/milagro-intro">Milagro Introduction</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-crypto">Milagro 
Crypto</a></li><li class="navListItem"><a class="navItem" 
href="/docs/milagro-protocols">Milagro Protocols</a></li><li 
class="navListItem"><a class="navItem" href="/docs/milagro-design">Milagro 
Design</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">AMCL Library</h3><ul class=""><li 
class="navListItem"><a class="navItem" href="/docs/amcl-overview">AMCL 
Overview</a></li><li class="navListItem"><a class="navItem" 
href="/docs/amcl-c-api">AMCL C API</a></li><li class="navListItem"><a 
class="navItem" href="/docs/amcl-javascript-api">AMCL JavaScript 
API</a></li></ul></div><div class="navGroup"><h3 class="navGrou
 pCategoryTitle">D-TA Node</h3><ul class=""><li class="navListItem"><a 
class="navItem" href="/docs/d-ta-overview">D-TA Node Overview</a></li><li 
class="navListItem navListItemActive"><a class="navItem" 
href="/docs/d-ta-api">D-TA Node API</a></li></ul></div><div 
class="navGroup"><h3 class="navGroupCategoryTitle">ZKP-MFA 
Clients/Servers</h3><ul class=""><li class="navListItem"><a class="navItem" 
href="/docs/zkp-mfa-overview">ZKP-MFA Overview</a></li><li 
class="navListItem"><a class="navItem" href="/docs/zkp-mfa-api">ZKP-MFA 
API</a></li></ul></div><div class="navGroup"><h3 
class="navGroupCategoryTitle">Project Info</h3><ul class=""><li 
class="navListItem"><a class="navItem" 
href="/docs/contributor-guide">Contributor&#x27;s 
Guide</a></li></ul></div></div></section></div><script>
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, 
className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div 
class="wrapper"><div class="post"><header class="postHeader"><h1 
class="postHeaderTitle">D-TA Node API</h1></header><article><div><span>
+    <div class="admonition admonition-tip">
+      <div class="admonition-heading">
+        <h5><div class="admonition-icon"><svg 
xmlns="http://www.w3.org/2000/svg"; width="12" height="16" viewBox="0 0 12 
16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 
1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 
0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 
3.23-.02.05-.02.11-.02.17H5c0-.06 
0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 
5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 
.66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 
2s-2.27-.86-2.5-2z"/></svg></div>  WE NEED HELP DOCUMENTING!</h5>
+      </div>
+      <div class="admonition-content">
+    <p>Interested in becoming a contributor? Milagro is looking for you.</p>
+<p><a href="/docs/contributor-guide.html">CONTRIBUTOR'S GUIDE</a>.</p>
+</div></div><!--
+Supported admonition types are: caution, note, important, tip, warning.
+--></span></div></article></div><div class="docs-prevnext"><a class="docs-prev 
button" href="/docs/d-ta-overview"><span class="arrow-prev">← 
</span><span>D-TA Node Overview</span></a><a class="docs-next button" 
href="/docs/zkp-mfa-overview"><span>ZKP-MFA Overview</span><span 
class="arrow-next"> →</span></a></div></div></div><nav 
class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section 
class="sitemap"><a href="/" class="nav-home"><img src="/img/milagro.svg" 
alt="Apache Milagro" width="50" height="100"/></a><div><h5>Docs</h5><a 
href="/docs/milagro-intro.html">Milagro Intro</a><a 
href="/docs/amcl-overview.html">Apache Milagro Crypto Library</a><a 
href="/docs/d-ta-overview.html">Decentralized Trust Authority</a><a 
href="/docs/zkp-mfa-overview.html">Zero Knowledge Proof 
MFA</a></div><div><h5>Community</h5><a href="../help">Support</a><a 
href="../docs/contributor-guide">Contributing</a><a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId
 =115529045" target="_blank" rel="noreferrer noopener">Developer Wiki</a><a 
href="https://twitter.com/apachemilagro?lang=en"; target="_blank" 
rel="noreferrer noopener">Twitter</a></div><div><h5>More</h5><a 
href="/blog">Status</a><a 
href="https://github.com/apache/incubator-milagro-crypto";>GitHub</a><a 
class="github-button" href="https://github.com/apache/incubator-milagro"; 
data-icon="octicon-star" 
data-count-href="/apache/incubator-milagro-crypto/stargazers" 
data-show-count="true" data-count-aria-label="# stargazers on GitHub" 
aria-label="Star this project on GitHub">Star</a></div></section><a 
href="https://apache.org"; target="_blank" rel="noreferrer noopener" 
class="fbOpenSource"><img src="/img/oss_logo.png" alt="Apache Incubator" 
width="170" height="45"/></a><section class="copyright">Copyright © 2019  The 
Apache Software Foundation. Apache Milagro, Milagro, Apache, the Apache 
feather, and the Apache Milagro project logo are either registered trademarks 
or trademarks of the Apach
 e Software Foundation.</section></footer></div></body></html>
\ No newline at end of file


Reply via email to