| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> |
| <meta name="generator" content="Doxygen 1.8.15"/> |
| <meta name="viewport" content="width=device-width, initial-scale=1"/> |
| <title>AMCL: ecdh_support.h File Reference</title> |
| <link href="tabs.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="jquery.js"></script> |
| <script type="text/javascript" src="dynsections.js"></script> |
| <link href="search/search.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="search/searchdata.js"></script> |
| <script type="text/javascript" src="search/search.js"></script> |
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> |
| </head> |
| <body> |
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> |
| <div id="titlearea"> |
| <table cellspacing="0" cellpadding="0"> |
| <tbody> |
| <tr style="height: 56px;"> |
| <td id="projectalign" style="padding-left: 0.5em;"> |
| <div id="projectname">AMCL |
| </div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.15 --> |
| <script type="text/javascript"> |
| /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| /* @license-end */ |
| </script> |
| <script type="text/javascript" src="menudata.js"></script> |
| <script type="text/javascript" src="menu.js"></script> |
| <script type="text/javascript"> |
| /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ |
| $(function() { |
| initMenu('',true,false,'search.php','Search'); |
| $(document).ready(function() { init_search(); }); |
| }); |
| /* @license-end */</script> |
| <div id="main-nav"></div> |
| <!-- window showing the filter options --> |
| <div id="MSearchSelectWindow" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| onkeydown="return searchBox.OnSearchSelectKey(event)"> |
| </div> |
| |
| <!-- iframe showing the search results (closed by default) --> |
| <div id="MSearchResultsWindow"> |
| <iframe src="javascript:void(0)" frameborder="0" |
| name="MSearchResults" id="MSearchResults"> |
| </iframe> |
| </div> |
| |
| <div id="nav-path" class="navpath"> |
| <ul> |
| <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> |
| </div> |
| </div><!-- top --> |
| <div class="header"> |
| <div class="summary"> |
| <a href="#func-members">Functions</a> </div> |
| <div class="headertitle"> |
| <div class="title">ecdh_support.h File Reference</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| |
| <p>ECDH Support Header File. |
| <a href="#details">More...</a></p> |
| <div class="textblock"><code>#include "amcl.h"</code><br /> |
| </div> |
| <p><a href="ecdh__support_8h_source.html">Go to the source code of this file.</a></p> |
| <table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> |
| Functions</h2></td></tr> |
| <tr class="memitem:a3078495b62c35ca843d7be428075787d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecdh__support_8h.html#a3078495b62c35ca843d7be428075787d">ehashit</a> (int sha, <a class="el" href="structoctet.html">octet</a> *p, int n, <a class="el" href="structoctet.html">octet</a> *x, <a class="el" href="structoctet.html">octet</a> *w, int pad)</td></tr> |
| <tr class="memdesc:a3078495b62c35ca843d7be428075787d"><td class="mdescLeft"> </td><td class="mdescRight">general purpose hash function w=hash(p|n|x|y) <a href="#a3078495b62c35ca843d7be428075787d">More...</a><br /></td></tr> |
| <tr class="separator:a3078495b62c35ca843d7be428075787d"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ae844e6528280a189a41b8095b8d41502"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecdh__support_8h.html#ae844e6528280a189a41b8095b8d41502">HASH</a> (int h, <a class="el" href="structoctet.html">octet</a> *I, <a class="el" href="structoctet.html">octet</a> *O)</td></tr> |
| <tr class="memdesc:ae844e6528280a189a41b8095b8d41502"><td class="mdescLeft"> </td><td class="mdescRight">hash an octet into another octet <a href="#ae844e6528280a189a41b8095b8d41502">More...</a><br /></td></tr> |
| <tr class="separator:ae844e6528280a189a41b8095b8d41502"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a3f914310b794e24aed3b14958579c246"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecdh__support_8h.html#a3f914310b794e24aed3b14958579c246">HMAC</a> (int h, <a class="el" href="structoctet.html">octet</a> *M, <a class="el" href="structoctet.html">octet</a> *K, int len, <a class="el" href="structoctet.html">octet</a> *tag)</td></tr> |
| <tr class="memdesc:a3f914310b794e24aed3b14958579c246"><td class="mdescLeft"> </td><td class="mdescRight">HMAC of message M using key K to create tag of length len in octet tag. <a href="#a3f914310b794e24aed3b14958579c246">More...</a><br /></td></tr> |
| <tr class="separator:a3f914310b794e24aed3b14958579c246"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:af451b083058dddf1aa794a20f636793b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecdh__support_8h.html#af451b083058dddf1aa794a20f636793b">KDF2</a> (int h, <a class="el" href="structoctet.html">octet</a> *Z, <a class="el" href="structoctet.html">octet</a> *P, int len, <a class="el" href="structoctet.html">octet</a> *K)</td></tr> |
| <tr class="memdesc:af451b083058dddf1aa794a20f636793b"><td class="mdescLeft"> </td><td class="mdescRight">Key Derivation Function - generates key K from inputs Z and P. <a href="#af451b083058dddf1aa794a20f636793b">More...</a><br /></td></tr> |
| <tr class="separator:af451b083058dddf1aa794a20f636793b"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a62c536a5dc88eb2f318773d6461f9759"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecdh__support_8h.html#a62c536a5dc88eb2f318773d6461f9759">PBKDF2</a> (int h, <a class="el" href="structoctet.html">octet</a> *P, <a class="el" href="structoctet.html">octet</a> *S, int rep, int len, <a class="el" href="structoctet.html">octet</a> *K)</td></tr> |
| <tr class="memdesc:a62c536a5dc88eb2f318773d6461f9759"><td class="mdescLeft"> </td><td class="mdescRight">Password Based Key Derivation Function - generates key K from password, salt and repeat counter. <a href="#a62c536a5dc88eb2f318773d6461f9759">More...</a><br /></td></tr> |
| <tr class="separator:a62c536a5dc88eb2f318773d6461f9759"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:afa50c2b84fbb255a8484dc0f1ccb4e93"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecdh__support_8h.html#afa50c2b84fbb255a8484dc0f1ccb4e93">AES_CBC_IV0_ENCRYPT</a> (<a class="el" href="structoctet.html">octet</a> *K, <a class="el" href="structoctet.html">octet</a> *P, <a class="el" href="structoctet.html">octet</a> *C)</td></tr> |
| <tr class="memdesc:afa50c2b84fbb255a8484dc0f1ccb4e93"><td class="mdescLeft"> </td><td class="mdescRight">AES encrypts a plaintext to a ciphtertext. <a href="#afa50c2b84fbb255a8484dc0f1ccb4e93">More...</a><br /></td></tr> |
| <tr class="separator:afa50c2b84fbb255a8484dc0f1ccb4e93"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a8828699bae266bf22a61ce901e49e0bc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecdh__support_8h.html#a8828699bae266bf22a61ce901e49e0bc">AES_CBC_IV0_DECRYPT</a> (<a class="el" href="structoctet.html">octet</a> *K, <a class="el" href="structoctet.html">octet</a> *C, <a class="el" href="structoctet.html">octet</a> *P)</td></tr> |
| <tr class="memdesc:a8828699bae266bf22a61ce901e49e0bc"><td class="mdescLeft"> </td><td class="mdescRight">AES encrypts a plaintext to a ciphtertext. <a href="#a8828699bae266bf22a61ce901e49e0bc">More...</a><br /></td></tr> |
| <tr class="separator:a8828699bae266bf22a61ce901e49e0bc"><td class="memSeparator" colspan="2"> </td></tr> |
| </table> |
| <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> |
| <div class="textblock"><dl class="section author"><dt>Author</dt><dd>Mike Scott </dd></dl> |
| </div><h2 class="groupheader">Function Documentation</h2> |
| <a id="a8828699bae266bf22a61ce901e49e0bc"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a8828699bae266bf22a61ce901e49e0bc">◆ </a></span>AES_CBC_IV0_DECRYPT()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int AES_CBC_IV0_DECRYPT </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>K</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>C</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>P</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>IEEE-1363 AES_CBC_IV0_DECRYPT function. Decrypts in CBC mode with a zero IV. </p><dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">K</td><td>AES key </td></tr> |
| <tr><td class="paramname">C</td><td>input ciphertext octet </td></tr> |
| <tr><td class="paramname">P</td><td>output plaintext octet </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 if bad input, else 1 </dd></dl> |
| |
| </div> |
| </div> |
| <a id="afa50c2b84fbb255a8484dc0f1ccb4e93"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#afa50c2b84fbb255a8484dc0f1ccb4e93">◆ </a></span>AES_CBC_IV0_ENCRYPT()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void AES_CBC_IV0_ENCRYPT </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>K</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>P</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>C</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>IEEE-1363 AES_CBC_IV0_ENCRYPT function. Encrypts in CBC mode with a zero IV, padding as necessary to create a full final block. </p><dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">K</td><td>AES key </td></tr> |
| <tr><td class="paramname">P</td><td>input plaintext octet </td></tr> |
| <tr><td class="paramname">C</td><td>output ciphertext octet </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| <a id="a3078495b62c35ca843d7be428075787d"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a3078495b62c35ca843d7be428075787d">◆ </a></span>ehashit()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void ehashit </td> |
| <td>(</td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>sha</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>p</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>n</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>x</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>w</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>pad</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <pre class="fragment">@param sha is the hash type |
| @param p first octect involved in the hash |
| @param n integer involved in the hash |
| @param x second octect involved in the h ash |
| @param w output |
| @param pad padding |
| </pre> |
| </div> |
| </div> |
| <a id="ae844e6528280a189a41b8095b8d41502"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ae844e6528280a189a41b8095b8d41502">◆ </a></span>HASH()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void HASH </td> |
| <td>(</td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>h</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>I</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>O</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">h</td><td>is the hash type </td></tr> |
| <tr><td class="paramname">I</td><td>input octet </td></tr> |
| <tr><td class="paramname">O</td><td>output octet - H(I) </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| <a id="a3f914310b794e24aed3b14958579c246"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a3f914310b794e24aed3b14958579c246">◆ </a></span>HMAC()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int HMAC </td> |
| <td>(</td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>h</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>M</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>K</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>len</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>tag</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>IEEE-1363 MAC1 function. Uses SHA256 internally. </p><dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">h</td><td>is the hash type </td></tr> |
| <tr><td class="paramname">M</td><td>input message octet </td></tr> |
| <tr><td class="paramname">K</td><td>input encryption key </td></tr> |
| <tr><td class="paramname">len</td><td>is output desired length of HMAC tag </td></tr> |
| <tr><td class="paramname">tag</td><td>is the output HMAC </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 for bad parameters, else 1 </dd></dl> |
| |
| </div> |
| </div> |
| <a id="af451b083058dddf1aa794a20f636793b"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#af451b083058dddf1aa794a20f636793b">◆ </a></span>KDF2()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void KDF2 </td> |
| <td>(</td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>h</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>Z</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>P</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>len</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>K</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>IEEE-1363 KDF2 Key Derivation Function. Uses SHA256 internally. </p><dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">h</td><td>is the hash type </td></tr> |
| <tr><td class="paramname">Z</td><td>input octet </td></tr> |
| <tr><td class="paramname">P</td><td>input key derivation parameters - can be NULL </td></tr> |
| <tr><td class="paramname">len</td><td>is output desired length of key </td></tr> |
| <tr><td class="paramname">K</td><td>is the derived key </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| <a id="a62c536a5dc88eb2f318773d6461f9759"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a62c536a5dc88eb2f318773d6461f9759">◆ </a></span>PBKDF2()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void PBKDF2 </td> |
| <td>(</td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>h</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>P</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>S</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>rep</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>len</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>K</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>PBKDF2 Password Based Key Derivation Function. Uses SHA256 internally. </p><dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">h</td><td>is the hash type </td></tr> |
| <tr><td class="paramname">P</td><td>input password </td></tr> |
| <tr><td class="paramname">S</td><td>input salt </td></tr> |
| <tr><td class="paramname">rep</td><td>Number of times to be iterated. </td></tr> |
| <tr><td class="paramname">len</td><td>is output desired length </td></tr> |
| <tr><td class="paramname">K</td><td>is the derived key </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| </div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated by  <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/> |
| </a> 1.8.15 |
| </small></address> |
| </body> |
| </html> |