| <!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: mpin_FP512BN.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_df7310d1a865926cc859bcfb1880083f.html">include</a></li> </ul> |
| </div> |
| </div><!-- top --> |
| <div class="header"> |
| <div class="summary"> |
| <a href="#define-members">Macros</a> | |
| <a href="#func-members">Functions</a> </div> |
| <div class="headertitle"> |
| <div class="title">mpin_FP512BN.h File Reference</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| |
| <p>M-Pin Header file. |
| <a href="#details">More...</a></p> |
| <div class="textblock"><code>#include "<a class="el" href="pair__FP512BN_8h_source.html">pair_FP512BN.h</a>"</code><br /> |
| <code>#include "<a class="el" href="pbc__support_8h_source.html">pbc_support.h</a>"</code><br /> |
| </div> |
| <p><a href="mpin__FP512BN_8h_source.html">Go to the source code of this file.</a></p> |
| <table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> |
| Macros</h2></td></tr> |
| <tr class="memitem:a0811438c0357e66d04452fcc27b783e4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a0811438c0357e66d04452fcc27b783e4">PGS_FP512BN</a>   <a class="el" href="config__big__512__60_8h.html#ab19d60ee027e5dad97c3c89e3d3d7525">MODBYTES_512_60</a></td></tr> |
| <tr class="separator:a0811438c0357e66d04452fcc27b783e4"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ab984b8de74d2bd277ba2fd3a019d8da6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#ab984b8de74d2bd277ba2fd3a019d8da6">PFS_FP512BN</a>   <a class="el" href="config__big__512__60_8h.html#ab19d60ee027e5dad97c3c89e3d3d7525">MODBYTES_512_60</a></td></tr> |
| <tr class="separator:ab984b8de74d2bd277ba2fd3a019d8da6"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a5bdbc339b8d614c9c4912a6b6040f4ec"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a5bdbc339b8d614c9c4912a6b6040f4ec">MPIN_OK</a>   0</td></tr> |
| <tr class="separator:a5bdbc339b8d614c9c4912a6b6040f4ec"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a1735b73fd12586e70fc971c85e088ffc"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a1735b73fd12586e70fc971c85e088ffc">MPIN_INVALID_POINT</a>   -14</td></tr> |
| <tr class="separator:a1735b73fd12586e70fc971c85e088ffc"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ad558e3e4522f6846ba98a0d3820faebd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#ad558e3e4522f6846ba98a0d3820faebd">MPIN_BAD_PIN</a>   -19</td></tr> |
| <tr class="separator:ad558e3e4522f6846ba98a0d3820faebd"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a0497a29b4ff3af7cecba9ea4140af442"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a0497a29b4ff3af7cecba9ea4140af442">MPIN_PAS</a>   16</td></tr> |
| <tr class="separator:a0497a29b4ff3af7cecba9ea4140af442"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a15c5084bd08109c7edebf50db273e494"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a15c5084bd08109c7edebf50db273e494">MAXPIN</a>   10000</td></tr> |
| <tr class="separator:a15c5084bd08109c7edebf50db273e494"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a1bc47461f3417c96da72488c6030447e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a1bc47461f3417c96da72488c6030447e">PBLEN</a>   14</td></tr> |
| <tr class="separator:a1bc47461f3417c96da72488c6030447e"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aeca90e1c1c62b70670514ffc18c9dfd4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#aeca90e1c1c62b70670514ffc18c9dfd4">MESSAGE_SIZE</a>   256</td></tr> |
| <tr class="separator:aeca90e1c1c62b70670514ffc18c9dfd4"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aa5b5094702a8fbb27123964a44b7f2f8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#aa5b5094702a8fbb27123964a44b7f2f8">M_SIZE_FP512BN</a>   (<a class="el" href="mpin__FP512BN_8h.html#aeca90e1c1c62b70670514ffc18c9dfd4">MESSAGE_SIZE</a>+2*<a class="el" href="mpin__FP512BN_8h.html#ab984b8de74d2bd277ba2fd3a019d8da6">PFS_FP512BN</a>+1)</td></tr> |
| <tr class="separator:aa5b5094702a8fbb27123964a44b7f2f8"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> |
| Functions</h2></td></tr> |
| <tr class="memitem:afbc48bd2cb8b81283e81999435daa2aa"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#afbc48bd2cb8b81283e81999435daa2aa">MPIN_FP512BN_GET_Y</a> (int h, int t, <a class="el" href="structoctet.html">octet</a> *O, <a class="el" href="structoctet.html">octet</a> *Y)</td></tr> |
| <tr class="memdesc:afbc48bd2cb8b81283e81999435daa2aa"><td class="mdescLeft"> </td><td class="mdescRight">Generate Y=H(s,O), where s is epoch time, O is an octet, and H(.) is a hash function. <a href="#afbc48bd2cb8b81283e81999435daa2aa">More...</a><br /></td></tr> |
| <tr class="separator:afbc48bd2cb8b81283e81999435daa2aa"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a775604109cd5258d49c1d437b10b5d3a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a775604109cd5258d49c1d437b10b5d3a">MPIN_FP512BN_EXTRACT_FACTOR</a> (int h, <a class="el" href="structoctet.html">octet</a> *ID, int factor, int facbits, <a class="el" href="structoctet.html">octet</a> *CS)</td></tr> |
| <tr class="memdesc:a775604109cd5258d49c1d437b10b5d3a"><td class="mdescLeft"> </td><td class="mdescRight">Extract a PIN number from a client secret. <a href="#a775604109cd5258d49c1d437b10b5d3a">More...</a><br /></td></tr> |
| <tr class="separator:a775604109cd5258d49c1d437b10b5d3a"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a9d3cb845d48767f3b46e5221dcfdcf9e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a9d3cb845d48767f3b46e5221dcfdcf9e">MPIN_FP512BN_RESTORE_FACTOR</a> (int h, <a class="el" href="structoctet.html">octet</a> *ID, int factor, int facbits, <a class="el" href="structoctet.html">octet</a> *CS)</td></tr> |
| <tr class="memdesc:a9d3cb845d48767f3b46e5221dcfdcf9e"><td class="mdescLeft"> </td><td class="mdescRight">Extract a PIN number from a client secret. <a href="#a9d3cb845d48767f3b46e5221dcfdcf9e">More...</a><br /></td></tr> |
| <tr class="separator:a9d3cb845d48767f3b46e5221dcfdcf9e"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a911638e97214778d6d5b55ca1ac7da42"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a911638e97214778d6d5b55ca1ac7da42">MPIN_FP512BN_EXTRACT_PIN</a> (int h, <a class="el" href="structoctet.html">octet</a> *ID, int pin, <a class="el" href="structoctet.html">octet</a> *CS)</td></tr> |
| <tr class="memdesc:a911638e97214778d6d5b55ca1ac7da42"><td class="mdescLeft"> </td><td class="mdescRight">Extract a PIN number from a client secret. <a href="#a911638e97214778d6d5b55ca1ac7da42">More...</a><br /></td></tr> |
| <tr class="separator:a911638e97214778d6d5b55ca1ac7da42"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a73ad64de03dae5a93cf1e305d96d7118"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a73ad64de03dae5a93cf1e305d96d7118">MPIN_FP512BN_CLIENT</a> (int h, int d, <a class="el" href="structoctet.html">octet</a> *ID, <a class="el" href="structcsprng.html">csprng</a> *R, <a class="el" href="structoctet.html">octet</a> *x, int pin, <a class="el" href="structoctet.html">octet</a> *T, <a class="el" href="structoctet.html">octet</a> *V, <a class="el" href="structoctet.html">octet</a> *U, <a class="el" href="structoctet.html">octet</a> *UT, <a class="el" href="structoctet.html">octet</a> *TP, <a class="el" href="structoctet.html">octet</a> *MESSAGE, int t, <a class="el" href="structoctet.html">octet</a> *y)</td></tr> |
| <tr class="memdesc:a73ad64de03dae5a93cf1e305d96d7118"><td class="mdescLeft"> </td><td class="mdescRight">Perform client side of the one-pass version of the M-Pin protocol. <a href="#a73ad64de03dae5a93cf1e305d96d7118">More...</a><br /></td></tr> |
| <tr class="separator:a73ad64de03dae5a93cf1e305d96d7118"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aed1aeef7bc5fb0fba3602ae6283a4092"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#aed1aeef7bc5fb0fba3602ae6283a4092">MPIN_FP512BN_CLIENT_1</a> (int h, int d, <a class="el" href="structoctet.html">octet</a> *ID, <a class="el" href="structcsprng.html">csprng</a> *R, <a class="el" href="structoctet.html">octet</a> *x, int pin, <a class="el" href="structoctet.html">octet</a> *T, <a class="el" href="structoctet.html">octet</a> *S, <a class="el" href="structoctet.html">octet</a> *U, <a class="el" href="structoctet.html">octet</a> *UT, <a class="el" href="structoctet.html">octet</a> *TP)</td></tr> |
| <tr class="memdesc:aed1aeef7bc5fb0fba3602ae6283a4092"><td class="mdescLeft"> </td><td class="mdescRight">Perform first pass of the client side of the 3-pass version of the M-Pin protocol. <a href="#aed1aeef7bc5fb0fba3602ae6283a4092">More...</a><br /></td></tr> |
| <tr class="separator:aed1aeef7bc5fb0fba3602ae6283a4092"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:af59564cff41054fdb924c2ce1e5e8ef2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#af59564cff41054fdb924c2ce1e5e8ef2">MPIN_FP512BN_RANDOM_GENERATE</a> (<a class="el" href="structcsprng.html">csprng</a> *R, <a class="el" href="structoctet.html">octet</a> *S)</td></tr> |
| <tr class="memdesc:af59564cff41054fdb924c2ce1e5e8ef2"><td class="mdescLeft"> </td><td class="mdescRight">Generate a random group element. <a href="#af59564cff41054fdb924c2ce1e5e8ef2">More...</a><br /></td></tr> |
| <tr class="separator:af59564cff41054fdb924c2ce1e5e8ef2"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a23ac05508529b0dc8e60cc3435ff08fa"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a23ac05508529b0dc8e60cc3435ff08fa">MPIN_FP512BN_CLIENT_2</a> (<a class="el" href="structoctet.html">octet</a> *x, <a class="el" href="structoctet.html">octet</a> *y, <a class="el" href="structoctet.html">octet</a> *V)</td></tr> |
| <tr class="memdesc:a23ac05508529b0dc8e60cc3435ff08fa"><td class="mdescLeft"> </td><td class="mdescRight">Perform second pass of the client side of the 3-pass version of the M-Pin protocol. <a href="#a23ac05508529b0dc8e60cc3435ff08fa">More...</a><br /></td></tr> |
| <tr class="separator:a23ac05508529b0dc8e60cc3435ff08fa"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a871210ac00056cddbc7ac8a21433b234"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a871210ac00056cddbc7ac8a21433b234">MPIN_FP512BN_SERVER</a> (int h, int d, <a class="el" href="structoctet.html">octet</a> *HID, <a class="el" href="structoctet.html">octet</a> *HTID, <a class="el" href="structoctet.html">octet</a> *y, <a class="el" href="structoctet.html">octet</a> *SS, <a class="el" href="structoctet.html">octet</a> *U, <a class="el" href="structoctet.html">octet</a> *UT, <a class="el" href="structoctet.html">octet</a> *V, <a class="el" href="structoctet.html">octet</a> *E, <a class="el" href="structoctet.html">octet</a> *F, <a class="el" href="structoctet.html">octet</a> *ID, <a class="el" href="structoctet.html">octet</a> *MESSAGE, int t, <a class="el" href="structoctet.html">octet</a> *Pa)</td></tr> |
| <tr class="memdesc:a871210ac00056cddbc7ac8a21433b234"><td class="mdescLeft"> </td><td class="mdescRight">Perform server side of the one-pass version of the M-Pin protocol. <a href="#a871210ac00056cddbc7ac8a21433b234">More...</a><br /></td></tr> |
| <tr class="separator:a871210ac00056cddbc7ac8a21433b234"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a98691a8e35012f8aad9ca214b903a3fb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a98691a8e35012f8aad9ca214b903a3fb">MPIN_FP512BN_SERVER_1</a> (int h, int d, <a class="el" href="structoctet.html">octet</a> *ID, <a class="el" href="structoctet.html">octet</a> *HID, <a class="el" href="structoctet.html">octet</a> *HTID)</td></tr> |
| <tr class="memdesc:a98691a8e35012f8aad9ca214b903a3fb"><td class="mdescLeft"> </td><td class="mdescRight">Perform first pass of the server side of the 3-pass version of the M-Pin protocol. <a href="#a98691a8e35012f8aad9ca214b903a3fb">More...</a><br /></td></tr> |
| <tr class="separator:a98691a8e35012f8aad9ca214b903a3fb"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ae5c6505bd5b2e9e810021b487bb2ccc5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#ae5c6505bd5b2e9e810021b487bb2ccc5">MPIN_FP512BN_SERVER_2</a> (int d, <a class="el" href="structoctet.html">octet</a> *HID, <a class="el" href="structoctet.html">octet</a> *HTID, <a class="el" href="structoctet.html">octet</a> *y, <a class="el" href="structoctet.html">octet</a> *SS, <a class="el" href="structoctet.html">octet</a> *U, <a class="el" href="structoctet.html">octet</a> *UT, <a class="el" href="structoctet.html">octet</a> *V, <a class="el" href="structoctet.html">octet</a> *E, <a class="el" href="structoctet.html">octet</a> *F, <a class="el" href="structoctet.html">octet</a> *Pa)</td></tr> |
| <tr class="memdesc:ae5c6505bd5b2e9e810021b487bb2ccc5"><td class="mdescLeft"> </td><td class="mdescRight">Perform third pass on the server side of the 3-pass version of the M-Pin protocol. <a href="#ae5c6505bd5b2e9e810021b487bb2ccc5">More...</a><br /></td></tr> |
| <tr class="separator:ae5c6505bd5b2e9e810021b487bb2ccc5"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a7a26b77686ab21a6319f67802b9899a8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a7a26b77686ab21a6319f67802b9899a8">MPIN_FP512BN_RECOMBINE_G1</a> (<a class="el" href="structoctet.html">octet</a> *Q1, <a class="el" href="structoctet.html">octet</a> *Q2, <a class="el" href="structoctet.html">octet</a> *Q)</td></tr> |
| <tr class="memdesc:a7a26b77686ab21a6319f67802b9899a8"><td class="mdescLeft"> </td><td class="mdescRight">Add two members from the group G1. <a href="#a7a26b77686ab21a6319f67802b9899a8">More...</a><br /></td></tr> |
| <tr class="separator:a7a26b77686ab21a6319f67802b9899a8"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ac7a3d25e90cc514f19901fa8827b150d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#ac7a3d25e90cc514f19901fa8827b150d">MPIN_FP512BN_RECOMBINE_G2</a> (<a class="el" href="structoctet.html">octet</a> *P1, <a class="el" href="structoctet.html">octet</a> *P2, <a class="el" href="structoctet.html">octet</a> *P)</td></tr> |
| <tr class="memdesc:ac7a3d25e90cc514f19901fa8827b150d"><td class="mdescLeft"> </td><td class="mdescRight">Add two members from the group G2. <a href="#ac7a3d25e90cc514f19901fa8827b150d">More...</a><br /></td></tr> |
| <tr class="separator:ac7a3d25e90cc514f19901fa8827b150d"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:adf2e078e0a463417f682a7e26db3297c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#adf2e078e0a463417f682a7e26db3297c">MPIN_FP512BN_KANGAROO</a> (<a class="el" href="structoctet.html">octet</a> *E, <a class="el" href="structoctet.html">octet</a> *F)</td></tr> |
| <tr class="memdesc:adf2e078e0a463417f682a7e26db3297c"><td class="mdescLeft"> </td><td class="mdescRight">Use Kangaroos to find PIN error. <a href="#adf2e078e0a463417f682a7e26db3297c">More...</a><br /></td></tr> |
| <tr class="separator:adf2e078e0a463417f682a7e26db3297c"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:afe601979502c0b350dc7d34e6300964b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#afe601979502c0b350dc7d34e6300964b">MPIN_FP512BN_ENCODING</a> (<a class="el" href="structcsprng.html">csprng</a> *R, <a class="el" href="structoctet.html">octet</a> *TP)</td></tr> |
| <tr class="memdesc:afe601979502c0b350dc7d34e6300964b"><td class="mdescLeft"> </td><td class="mdescRight">Encoding of a Time Permit to make it indistinguishable from a random string. <a href="#afe601979502c0b350dc7d34e6300964b">More...</a><br /></td></tr> |
| <tr class="separator:afe601979502c0b350dc7d34e6300964b"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a1273356349fac7ba0bfe0575d0395c40"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a1273356349fac7ba0bfe0575d0395c40">MPIN_FP512BN_DECODING</a> (<a class="el" href="structoctet.html">octet</a> *TP)</td></tr> |
| <tr class="memdesc:a1273356349fac7ba0bfe0575d0395c40"><td class="mdescLeft"> </td><td class="mdescRight">Encoding of an obfuscated Time Permit. <a href="#a1273356349fac7ba0bfe0575d0395c40">More...</a><br /></td></tr> |
| <tr class="separator:a1273356349fac7ba0bfe0575d0395c40"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a49d7236838801f71d2f17c81a4fb0e35"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a49d7236838801f71d2f17c81a4fb0e35">MPIN_FP512BN_GET_G1_MULTIPLE</a> (<a class="el" href="structcsprng.html">csprng</a> *R, int type, <a class="el" href="structoctet.html">octet</a> *x, <a class="el" href="structoctet.html">octet</a> *G, <a class="el" href="structoctet.html">octet</a> *W)</td></tr> |
| <tr class="memdesc:a49d7236838801f71d2f17c81a4fb0e35"><td class="mdescLeft"> </td><td class="mdescRight">Find a random multiple of a point in G1. <a href="#a49d7236838801f71d2f17c81a4fb0e35">More...</a><br /></td></tr> |
| <tr class="separator:a49d7236838801f71d2f17c81a4fb0e35"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ab02506cf0fd7b3e0cf1cef5d4c1b0cd2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#ab02506cf0fd7b3e0cf1cef5d4c1b0cd2">MPIN_FP512BN_GET_G2_MULTIPLE</a> (<a class="el" href="structcsprng.html">csprng</a> *R, int type, <a class="el" href="structoctet.html">octet</a> *x, <a class="el" href="structoctet.html">octet</a> *G, <a class="el" href="structoctet.html">octet</a> *W)</td></tr> |
| <tr class="memdesc:ab02506cf0fd7b3e0cf1cef5d4c1b0cd2"><td class="mdescLeft"> </td><td class="mdescRight">Find a random multiple of a point in G1. <a href="#ab02506cf0fd7b3e0cf1cef5d4c1b0cd2">More...</a><br /></td></tr> |
| <tr class="separator:ab02506cf0fd7b3e0cf1cef5d4c1b0cd2"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a482ce52edf402489045dda0d0992b194"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a482ce52edf402489045dda0d0992b194">MPIN_FP512BN_GET_CLIENT_SECRET</a> (<a class="el" href="structoctet.html">octet</a> *S, <a class="el" href="structoctet.html">octet</a> *ID, <a class="el" href="structoctet.html">octet</a> *CS)</td></tr> |
| <tr class="memdesc:a482ce52edf402489045dda0d0992b194"><td class="mdescLeft"> </td><td class="mdescRight">Create a client secret in G1 from a master secret and the client ID. <a href="#a482ce52edf402489045dda0d0992b194">More...</a><br /></td></tr> |
| <tr class="separator:a482ce52edf402489045dda0d0992b194"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a0c67ca00cc51bc932ef009e523b2f002"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a0c67ca00cc51bc932ef009e523b2f002">MPIN_FP512BN_GET_CLIENT_PERMIT</a> (int h, int d, <a class="el" href="structoctet.html">octet</a> *S, <a class="el" href="structoctet.html">octet</a> *ID, <a class="el" href="structoctet.html">octet</a> *TP)</td></tr> |
| <tr class="memdesc:a0c67ca00cc51bc932ef009e523b2f002"><td class="mdescLeft"> </td><td class="mdescRight">Create a Time Permit in G1 from a master secret and the client ID. <a href="#a0c67ca00cc51bc932ef009e523b2f002">More...</a><br /></td></tr> |
| <tr class="separator:a0c67ca00cc51bc932ef009e523b2f002"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a6077a41eada3308ec5373263e24bd197"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a6077a41eada3308ec5373263e24bd197">MPIN_FP512BN_GET_SERVER_SECRET</a> (<a class="el" href="structoctet.html">octet</a> *S, <a class="el" href="structoctet.html">octet</a> *SS)</td></tr> |
| <tr class="memdesc:a6077a41eada3308ec5373263e24bd197"><td class="mdescLeft"> </td><td class="mdescRight">Create a server secret in G2 from a master secret. <a href="#a6077a41eada3308ec5373263e24bd197">More...</a><br /></td></tr> |
| <tr class="separator:a6077a41eada3308ec5373263e24bd197"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a4c45f5fb067106892893db21ed57388a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#a4c45f5fb067106892893db21ed57388a">MPIN_FP512BN_PRECOMPUTE</a> (<a class="el" href="structoctet.html">octet</a> *T, <a class="el" href="structoctet.html">octet</a> *ID, <a class="el" href="structoctet.html">octet</a> *CP, <a class="el" href="structoctet.html">octet</a> *g1, <a class="el" href="structoctet.html">octet</a> *g2)</td></tr> |
| <tr class="memdesc:a4c45f5fb067106892893db21ed57388a"><td class="mdescLeft"> </td><td class="mdescRight">Precompute values for use by the client side of M-Pin Full. <a href="#a4c45f5fb067106892893db21ed57388a">More...</a><br /></td></tr> |
| <tr class="separator:a4c45f5fb067106892893db21ed57388a"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aef561a9f7967bdf1d5dd24f976adf474"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#aef561a9f7967bdf1d5dd24f976adf474">MPIN_FP512BN_SERVER_KEY</a> (int h, <a class="el" href="structoctet.html">octet</a> *Z, <a class="el" href="structoctet.html">octet</a> *SS, <a class="el" href="structoctet.html">octet</a> *w, <a class="el" href="structoctet.html">octet</a> *p, <a class="el" href="structoctet.html">octet</a> *I, <a class="el" href="structoctet.html">octet</a> *U, <a class="el" href="structoctet.html">octet</a> *UT, <a class="el" href="structoctet.html">octet</a> *K)</td></tr> |
| <tr class="memdesc:aef561a9f7967bdf1d5dd24f976adf474"><td class="mdescLeft"> </td><td class="mdescRight">Calculate Key on Server side for M-Pin Full. <a href="#aef561a9f7967bdf1d5dd24f976adf474">More...</a><br /></td></tr> |
| <tr class="separator:aef561a9f7967bdf1d5dd24f976adf474"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:af111d7924dcc411d8c2064b391ef80bc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#af111d7924dcc411d8c2064b391ef80bc">MPIN_FP512BN_CLIENT_KEY</a> (int h, <a class="el" href="structoctet.html">octet</a> *g1, <a class="el" href="structoctet.html">octet</a> *g2, int pin, <a class="el" href="structoctet.html">octet</a> *r, <a class="el" href="structoctet.html">octet</a> *x, <a class="el" href="structoctet.html">octet</a> *p, <a class="el" href="structoctet.html">octet</a> *T, <a class="el" href="structoctet.html">octet</a> *K)</td></tr> |
| <tr class="memdesc:af111d7924dcc411d8c2064b391ef80bc"><td class="mdescLeft"> </td><td class="mdescRight">Calculate Key on Client side for M-Pin Full. <a href="#af111d7924dcc411d8c2064b391ef80bc">More...</a><br /></td></tr> |
| <tr class="separator:af111d7924dcc411d8c2064b391ef80bc"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:af5e1665f6585ed8d8308508706ae8ac9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mpin__FP512BN_8h.html#af5e1665f6585ed8d8308508706ae8ac9">MPIN_FP512BN_GET_DVS_KEYPAIR</a> (<a class="el" href="structcsprng.html">csprng</a> *R, <a class="el" href="structoctet.html">octet</a> *Z, <a class="el" href="structoctet.html">octet</a> *Pa)</td></tr> |
| <tr class="memdesc:af5e1665f6585ed8d8308508706ae8ac9"><td class="mdescLeft"> </td><td class="mdescRight">Generates a random public key for the client z.Q. <a href="#af5e1665f6585ed8d8308508706ae8ac9">More...</a><br /></td></tr> |
| <tr class="separator:af5e1665f6585ed8d8308508706ae8ac9"><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">Macro Definition Documentation</h2> |
| <a id="aa5b5094702a8fbb27123964a44b7f2f8"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#aa5b5094702a8fbb27123964a44b7f2f8">◆ </a></span>M_SIZE_FP512BN</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define M_SIZE_FP512BN   (<a class="el" href="mpin__FP512BN_8h.html#aeca90e1c1c62b70670514ffc18c9dfd4">MESSAGE_SIZE</a>+2*<a class="el" href="mpin__FP512BN_8h.html#ab984b8de74d2bd277ba2fd3a019d8da6">PFS_FP512BN</a>+1)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Signature message size and G1 size </p> |
| |
| </div> |
| </div> |
| <a id="a15c5084bd08109c7edebf50db273e494"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a15c5084bd08109c7edebf50db273e494">◆ </a></span>MAXPIN</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define MAXPIN   10000</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>max PIN </p> |
| |
| </div> |
| </div> |
| <a id="aeca90e1c1c62b70670514ffc18c9dfd4"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#aeca90e1c1c62b70670514ffc18c9dfd4">◆ </a></span>MESSAGE_SIZE</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define MESSAGE_SIZE   256</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Signature message size </p> |
| |
| </div> |
| </div> |
| <a id="ad558e3e4522f6846ba98a0d3820faebd"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ad558e3e4522f6846ba98a0d3820faebd">◆ </a></span>MPIN_BAD_PIN</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define MPIN_BAD_PIN   -19</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Bad PIN number entered </p> |
| |
| </div> |
| </div> |
| <a id="a1735b73fd12586e70fc971c85e088ffc"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a1735b73fd12586e70fc971c85e088ffc">◆ </a></span>MPIN_INVALID_POINT</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define MPIN_INVALID_POINT   -14</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Point is NOT on the curve </p> |
| |
| </div> |
| </div> |
| <a id="a5bdbc339b8d614c9c4912a6b6040f4ec"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a5bdbc339b8d614c9c4912a6b6040f4ec">◆ </a></span>MPIN_OK</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define MPIN_OK   0</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Function completed without error </p> |
| |
| </div> |
| </div> |
| <a id="a0497a29b4ff3af7cecba9ea4140af442"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a0497a29b4ff3af7cecba9ea4140af442">◆ </a></span>MPIN_PAS</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define MPIN_PAS   16</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>MPIN Symmetric Key Size </p> |
| |
| </div> |
| </div> |
| <a id="a1bc47461f3417c96da72488c6030447e"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a1bc47461f3417c96da72488c6030447e">◆ </a></span>PBLEN</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define PBLEN   14</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>max length of PIN in bits </p> |
| |
| </div> |
| </div> |
| <a id="ab984b8de74d2bd277ba2fd3a019d8da6"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ab984b8de74d2bd277ba2fd3a019d8da6">◆ </a></span>PFS_FP512BN</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define PFS_FP512BN   <a class="el" href="config__big__512__60_8h.html#ab19d60ee027e5dad97c3c89e3d3d7525">MODBYTES_512_60</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>MPIN Field Size </p> |
| |
| </div> |
| </div> |
| <a id="a0811438c0357e66d04452fcc27b783e4"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a0811438c0357e66d04452fcc27b783e4">◆ </a></span>PGS_FP512BN</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define PGS_FP512BN   <a class="el" href="config__big__512__60_8h.html#ab19d60ee027e5dad97c3c89e3d3d7525">MODBYTES_512_60</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>MPIN Group Size </p> |
| |
| </div> |
| </div> |
| <h2 class="groupheader">Function Documentation</h2> |
| <a id="a73ad64de03dae5a93cf1e305d96d7118"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a73ad64de03dae5a93cf1e305d96d7118">◆ </a></span>MPIN_FP512BN_CLIENT()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_CLIENT </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">int </td> |
| <td class="paramname"><em>d</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>ID</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structcsprng.html">csprng</a> * </td> |
| <td class="paramname"><em>R</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">int </td> |
| <td class="paramname"><em>pin</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>T</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>V</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>U</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>UT</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>TP</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>MESSAGE</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>t</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>y</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>If Time Permits are disabled, set d = 0, and UT is not generated and can be set to NULL. If Time Permits are enabled, and PIN error detection is OFF, U is not generated and can be set to NULL. If Time Permits are enabled, and PIN error detection is ON, U and UT are both generated. </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">d</td><td>is input date, in days since the epoch. Set to 0 if Time permits disabled </td></tr> |
| <tr><td class="paramname">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">R</td><td>is a pointer to a cryptographically secure random number generator </td></tr> |
| <tr><td class="paramname">x</td><td>an output internally randomly generated if R!=NULL, otherwise must be provided as an input </td></tr> |
| <tr><td class="paramname">pin</td><td>is the input PIN number </td></tr> |
| <tr><td class="paramname">T</td><td>is the input M-Pin token (the client secret with PIN portion removed) </td></tr> |
| <tr><td class="paramname">V</td><td>is output = -(x+y)(CS+TP), where CS is the reconstructed client secret, and TP is the time permit </td></tr> |
| <tr><td class="paramname">U</td><td>is output = x.H(ID) </td></tr> |
| <tr><td class="paramname">UT</td><td>is output = x.(H(ID)+H(d|H(ID))) </td></tr> |
| <tr><td class="paramname">TP</td><td>is the input time permit </td></tr> |
| <tr><td class="paramname">MESSAGE</td><td>is the message to be signed </td></tr> |
| <tr><td class="paramname">t</td><td>is input epoch time in seconds - a timestamp </td></tr> |
| <tr><td class="paramname">y</td><td>is output H(t|U) or H(t|UT) if Time Permits enabled </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="aed1aeef7bc5fb0fba3602ae6283a4092"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#aed1aeef7bc5fb0fba3602ae6283a4092">◆ </a></span>MPIN_FP512BN_CLIENT_1()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_CLIENT_1 </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">int </td> |
| <td class="paramname"><em>d</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>ID</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structcsprng.html">csprng</a> * </td> |
| <td class="paramname"><em>R</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">int </td> |
| <td class="paramname"><em>pin</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>T</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"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>U</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>UT</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>TP</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>If Time Permits are disabled, set d = 0, and UT is not generated and can be set to NULL. If Time Permits are enabled, and PIN error detection is OFF, U is not generated and can be set to NULL. If Time Permits are enabled, and PIN error detection is ON, U and UT are both generated. </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">d</td><td>is input date, in days since the epoch. Set to 0 if Time permits disabled </td></tr> |
| <tr><td class="paramname">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">R</td><td>is a pointer to a cryptographically secure random number generator </td></tr> |
| <tr><td class="paramname">x</td><td>an output internally randomly generated if R!=NULL, otherwise must be provided as an input </td></tr> |
| <tr><td class="paramname">pin</td><td>is the input PIN number </td></tr> |
| <tr><td class="paramname">T</td><td>is the input M-Pin token (the client secret with PIN portion removed) </td></tr> |
| <tr><td class="paramname">S</td><td>is output = CS+TP, where CS=is the reconstructed client secret, and TP is the time permit </td></tr> |
| <tr><td class="paramname">U</td><td>is output = x.H(ID) </td></tr> |
| <tr><td class="paramname">UT</td><td>is output = x.(H(ID)+H(d|H(ID))) </td></tr> |
| <tr><td class="paramname">TP</td><td>is the input time permit </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a23ac05508529b0dc8e60cc3435ff08fa"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a23ac05508529b0dc8e60cc3435ff08fa">◆ </a></span>MPIN_FP512BN_CLIENT_2()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_CLIENT_2 </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>y</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>V</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">x</td><td>an input, a locally generated random number </td></tr> |
| <tr><td class="paramname">y</td><td>an input random challenge from the server </td></tr> |
| <tr><td class="paramname">V</td><td>on output = -(x+y).V </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="af111d7924dcc411d8c2064b391ef80bc"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#af111d7924dcc411d8c2064b391ef80bc">◆ </a></span>MPIN_FP512BN_CLIENT_KEY()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_CLIENT_KEY </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>g1</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>g2</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>pin</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>r</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>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>T</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"> |
| <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">g1</td><td>precomputed input </td></tr> |
| <tr><td class="paramname">g2</td><td>precomputed input </td></tr> |
| <tr><td class="paramname">pin</td><td>is the input PIN number </td></tr> |
| <tr><td class="paramname">r</td><td>is an input, a locally generated random number </td></tr> |
| <tr><td class="paramname">x</td><td>is an input, a locally generated random number </td></tr> |
| <tr><td class="paramname">p</td><td>is an input, hash of the protocol transcript </td></tr> |
| <tr><td class="paramname">T</td><td>is the input Server-side Diffie-Hellman component </td></tr> |
| <tr><td class="paramname">K</td><td>is the output calculated shared key </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a1273356349fac7ba0bfe0575d0395c40"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a1273356349fac7ba0bfe0575d0395c40">◆ </a></span>MPIN_FP512BN_DECODING()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_DECODING </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>TP</em></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">TP</td><td>is the input obfuscated time permit, restored on output </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="afe601979502c0b350dc7d34e6300964b"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#afe601979502c0b350dc7d34e6300964b">◆ </a></span>MPIN_FP512BN_ENCODING()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_ENCODING </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structcsprng.html">csprng</a> * </td> |
| <td class="paramname"><em>R</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>TP</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">R</td><td>is a pointer to a cryptographically secure random number generator </td></tr> |
| <tr><td class="paramname">TP</td><td>is the input time permit, obfuscated on output </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a775604109cd5258d49c1d437b10b5d3a"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a775604109cd5258d49c1d437b10b5d3a">◆ </a></span>MPIN_FP512BN_EXTRACT_FACTOR()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_EXTRACT_FACTOR </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>ID</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>factor</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>facbits</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>CS</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">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">factor</td><td>is an input factor </td></tr> |
| <tr><td class="paramname">facbits</td><td>is the number of bits in the factor </td></tr> |
| <tr><td class="paramname">CS</td><td>is the client secret from which the factor is to be extracted </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a911638e97214778d6d5b55ca1ac7da42"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a911638e97214778d6d5b55ca1ac7da42">◆ </a></span>MPIN_FP512BN_EXTRACT_PIN()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_EXTRACT_PIN </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>ID</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>pin</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>CS</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">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">pin</td><td>is an input PIN number </td></tr> |
| <tr><td class="paramname">CS</td><td>is the client secret from which the PIN is to be extracted </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a0c67ca00cc51bc932ef009e523b2f002"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a0c67ca00cc51bc932ef009e523b2f002">◆ </a></span>MPIN_FP512BN_GET_CLIENT_PERMIT()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_GET_CLIENT_PERMIT </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">int </td> |
| <td class="paramname"><em>d</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"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>ID</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>TP</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">d</td><td>is input date, in days since the epoch. </td></tr> |
| <tr><td class="paramname">S</td><td>is an input master secret </td></tr> |
| <tr><td class="paramname">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">TP</td><td>is a Time Permit for the given date = s.H(d|H(ID)) </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a482ce52edf402489045dda0d0992b194"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a482ce52edf402489045dda0d0992b194">◆ </a></span>MPIN_FP512BN_GET_CLIENT_SECRET()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_GET_CLIENT_SECRET </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"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>ID</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>CS</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">S</td><td>is an input master secret </td></tr> |
| <tr><td class="paramname">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">CS</td><td>is the full client secret = s.H(ID) </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="af5e1665f6585ed8d8308508706ae8ac9"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#af5e1665f6585ed8d8308508706ae8ac9">◆ </a></span>MPIN_FP512BN_GET_DVS_KEYPAIR()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_GET_DVS_KEYPAIR </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structcsprng.html">csprng</a> * </td> |
| <td class="paramname"><em>R</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>Pa</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <pre class="fragment">@param R is a pointer to a cryptographically secure random number generator |
| @param Z an output internally randomly generated if R!=NULL, otherwise it must be provided as an input |
| @param Pa the output public key for the client |
| </pre> |
| </div> |
| </div> |
| <a id="a49d7236838801f71d2f17c81a4fb0e35"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a49d7236838801f71d2f17c81a4fb0e35">◆ </a></span>MPIN_FP512BN_GET_G1_MULTIPLE()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_GET_G1_MULTIPLE </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structcsprng.html">csprng</a> * </td> |
| <td class="paramname"><em>R</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>type</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>G</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></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">R</td><td>is a pointer to a cryptographically secure random number generator </td></tr> |
| <tr><td class="paramname">type</td><td>determines type of action to be taken </td></tr> |
| <tr><td class="paramname">x</td><td>an output internally randomly generated if R!=NULL, otherwise must be provided as an input </td></tr> |
| <tr><td class="paramname">G</td><td>if type=0 a point in G1, else an octet to be mapped to G1 </td></tr> |
| <tr><td class="paramname">W</td><td>the output =x.G or x.M(G), where M(.) is a mapping </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="ab02506cf0fd7b3e0cf1cef5d4c1b0cd2"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ab02506cf0fd7b3e0cf1cef5d4c1b0cd2">◆ </a></span>MPIN_FP512BN_GET_G2_MULTIPLE()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_GET_G2_MULTIPLE </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structcsprng.html">csprng</a> * </td> |
| <td class="paramname"><em>R</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>type</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>G</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></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">R</td><td>is a pointer to a cryptographically secure random number generator </td></tr> |
| <tr><td class="paramname">type</td><td>determines type of action to betaken </td></tr> |
| <tr><td class="paramname">x</td><td>an output internally randomly generated if R!=NULL, otherwise must be provided as an input </td></tr> |
| <tr><td class="paramname">G</td><td>a point in G2 </td></tr> |
| <tr><td class="paramname">W</td><td>the output =x.G or (1/x).G </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a6077a41eada3308ec5373263e24bd197"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a6077a41eada3308ec5373263e24bd197">◆ </a></span>MPIN_FP512BN_GET_SERVER_SECRET()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_GET_SERVER_SECRET </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"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>SS</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">S</td><td>is an input master secret </td></tr> |
| <tr><td class="paramname">SS</td><td>is the server secret = s.Q where Q is a fixed generator of G2 </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="afbc48bd2cb8b81283e81999435daa2aa"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#afbc48bd2cb8b81283e81999435daa2aa">◆ </a></span>MPIN_FP512BN_GET_Y()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void MPIN_FP512BN_GET_Y </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">int </td> |
| <td class="paramname"><em>t</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 class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>Y</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">t</td><td>is epoch time in seconds </td></tr> |
| <tr><td class="paramname">O</td><td>is an input octet </td></tr> |
| <tr><td class="paramname">Y</td><td>is the output octet </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| <a id="adf2e078e0a463417f682a7e26db3297c"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#adf2e078e0a463417f682a7e26db3297c">◆ </a></span>MPIN_FP512BN_KANGAROO()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_KANGAROO </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>E</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>F</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">E</td><td>a member of the group GT </td></tr> |
| <tr><td class="paramname">F</td><td>a member of the group GT = E^e </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 if Kangaroos failed, or the PIN error e </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a4c45f5fb067106892893db21ed57388a"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a4c45f5fb067106892893db21ed57388a">◆ </a></span>MPIN_FP512BN_PRECOMPUTE()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_PRECOMPUTE </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>T</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>ID</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>CP</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>g1</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>g2</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">T</td><td>is the input M-Pin token (the client secret with PIN portion removed) </td></tr> |
| <tr><td class="paramname">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">CP</td><td>is Public Key (or NULL) </td></tr> |
| <tr><td class="paramname">g1</td><td>precomputed output </td></tr> |
| <tr><td class="paramname">g2</td><td>precomputed output </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="af59564cff41054fdb924c2ce1e5e8ef2"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#af59564cff41054fdb924c2ce1e5e8ef2">◆ </a></span>MPIN_FP512BN_RANDOM_GENERATE()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_RANDOM_GENERATE </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structcsprng.html">csprng</a> * </td> |
| <td class="paramname"><em>R</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></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">R</td><td>is a pointer to a cryptographically secure random number generator </td></tr> |
| <tr><td class="paramname">S</td><td>is the output random octet </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a7a26b77686ab21a6319f67802b9899a8"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a7a26b77686ab21a6319f67802b9899a8">◆ </a></span>MPIN_FP512BN_RECOMBINE_G1()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_RECOMBINE_G1 </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>Q1</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>Q2</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>Q</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">Q1</td><td>an input member of G1 </td></tr> |
| <tr><td class="paramname">Q2</td><td>an input member of G1 </td></tr> |
| <tr><td class="paramname">Q</td><td>an output member of G1 = Q1+Q2 </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="ac7a3d25e90cc514f19901fa8827b150d"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ac7a3d25e90cc514f19901fa8827b150d">◆ </a></span>MPIN_FP512BN_RECOMBINE_G2()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_RECOMBINE_G2 </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structoctet.html">octet</a> * </td> |
| <td class="paramname"><em>P1</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>P2</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"> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">P1</td><td>an input member of G2 </td></tr> |
| <tr><td class="paramname">P2</td><td>an input member of G2 </td></tr> |
| <tr><td class="paramname">P</td><td>an output member of G2 = P1+P2 </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a9d3cb845d48767f3b46e5221dcfdcf9e"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a9d3cb845d48767f3b46e5221dcfdcf9e">◆ </a></span>MPIN_FP512BN_RESTORE_FACTOR()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_RESTORE_FACTOR </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>ID</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>factor</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>facbits</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>CS</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">ID</td><td>is the input client identity </td></tr> |
| <tr><td class="paramname">factor</td><td>is an input factor </td></tr> |
| <tr><td class="paramname">facbits</td><td>is the number of bits in the factor </td></tr> |
| <tr><td class="paramname">CS</td><td>is the client secret to which the factor is to be added </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a871210ac00056cddbc7ac8a21433b234"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a871210ac00056cddbc7ac8a21433b234">◆ </a></span>MPIN_FP512BN_SERVER()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_SERVER </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">int </td> |
| <td class="paramname"><em>d</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>HID</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>HTID</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>y</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>SS</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>U</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>UT</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>V</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>E</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>F</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>ID</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>MESSAGE</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>t</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>Pa</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>If Time Permits are disabled, set d = 0, and UT and HTID are not generated and can be set to NULL. If Time Permits are enabled, and PIN error detection is OFF, U and HID are not needed and can be set to NULL. If Time Permits are enabled, and PIN error detection is ON, U, UT, HID and HTID are all required. </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">d</td><td>is input date, in days since the epoch. Set to 0 if Time permits disabled </td></tr> |
| <tr><td class="paramname">HID</td><td>is output H(ID), a hash of the client ID </td></tr> |
| <tr><td class="paramname">HTID</td><td>is output H(ID)+H(d|H(ID)) </td></tr> |
| <tr><td class="paramname">y</td><td>is output H(t|U) or H(t|UT) if Time Permits enabled </td></tr> |
| <tr><td class="paramname">SS</td><td>is the input server secret </td></tr> |
| <tr><td class="paramname">U</td><td>is input from the client = x.H(ID) </td></tr> |
| <tr><td class="paramname">UT</td><td>is input from the client= x.(H(ID)+H(d|H(ID))) </td></tr> |
| <tr><td class="paramname">V</td><td>is an input from the client </td></tr> |
| <tr><td class="paramname">E</td><td>is an output to help the Kangaroos to find the PIN error, or NULL if not required </td></tr> |
| <tr><td class="paramname">F</td><td>is an output to help the Kangaroos to find the PIN error, or NULL if not required </td></tr> |
| <tr><td class="paramname">ID</td><td>is the input claimed client identity </td></tr> |
| <tr><td class="paramname">MESSAGE</td><td>is the message to be signed </td></tr> |
| <tr><td class="paramname">t</td><td>is input epoch time in seconds - a timestamp </td></tr> |
| <tr><td class="paramname">Pa</td><td>is input from the client z.Q or NULL if the key-escrow less scheme is not used </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="a98691a8e35012f8aad9ca214b903a3fb"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#a98691a8e35012f8aad9ca214b903a3fb">◆ </a></span>MPIN_FP512BN_SERVER_1()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void MPIN_FP512BN_SERVER_1 </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">int </td> |
| <td class="paramname"><em>d</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>ID</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>HID</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>HTID</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">d</td><td>is input date, in days since the epoch. Set to 0 if Time permits disabled </td></tr> |
| <tr><td class="paramname">ID</td><td>is the input claimed client identity </td></tr> |
| <tr><td class="paramname">HID</td><td>is output H(ID), a hash of the client ID </td></tr> |
| <tr><td class="paramname">HTID</td><td>is output H(ID)+H(d|H(ID)) </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="ae5c6505bd5b2e9e810021b487bb2ccc5"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ae5c6505bd5b2e9e810021b487bb2ccc5">◆ </a></span>MPIN_FP512BN_SERVER_2()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_SERVER_2 </td> |
| <td>(</td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>d</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>HID</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>HTID</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>y</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>SS</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>U</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>UT</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>V</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>E</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>F</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>Pa</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>If Time Permits are disabled, set d = 0, and UT and HTID are not needed and can be set to NULL. If Time Permits are enabled, and PIN error detection is OFF, U and HID are not needed and can be set to NULL. If Time Permits are enabled, and PIN error detection is ON, U, UT, HID and HTID are all required. </p><dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">d</td><td>is input date, in days since the epoch. Set to 0 if Time permits disabled </td></tr> |
| <tr><td class="paramname">HID</td><td>is input H(ID), a hash of the client ID </td></tr> |
| <tr><td class="paramname">HTID</td><td>is input H(ID)+H(d|H(ID)) </td></tr> |
| <tr><td class="paramname">y</td><td>is the input server's randomly generated challenge </td></tr> |
| <tr><td class="paramname">SS</td><td>is the input server secret </td></tr> |
| <tr><td class="paramname">U</td><td>is input from the client = x.H(ID) </td></tr> |
| <tr><td class="paramname">UT</td><td>is input from the client= x.(H(ID)+H(d|H(ID))) </td></tr> |
| <tr><td class="paramname">V</td><td>is an input from the client </td></tr> |
| <tr><td class="paramname">E</td><td>is an output to help the Kangaroos to find the PIN error, or NULL if not required </td></tr> |
| <tr><td class="paramname">F</td><td>is an output to help the Kangaroos to find the PIN error, or NULL if not required </td></tr> |
| <tr><td class="paramname">Pa</td><td>is the input public key from the client, z.Q or NULL if the client uses regular mpin </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </dd></dl> |
| |
| </div> |
| </div> |
| <a id="aef561a9f7967bdf1d5dd24f976adf474"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#aef561a9f7967bdf1d5dd24f976adf474">◆ </a></span>MPIN_FP512BN_SERVER_KEY()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int MPIN_FP512BN_SERVER_KEY </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>SS</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"><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>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>U</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>UT</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>Uses UT internally for the key calculation, unless not available in which case U is used </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>is the input Client-side Diffie-Hellman component </td></tr> |
| <tr><td class="paramname">SS</td><td>is the input server secret </td></tr> |
| <tr><td class="paramname">w</td><td>is an input random number generated by the server </td></tr> |
| <tr><td class="paramname">p</td><td>is an input, hash of the protocol transcript </td></tr> |
| <tr><td class="paramname">I</td><td>is the hashed input client ID = H(ID) </td></tr> |
| <tr><td class="paramname">U</td><td>is input from the client = x.H(ID) </td></tr> |
| <tr><td class="paramname">UT</td><td>is input from the client= x.(H(ID)+H(d|H(ID))) </td></tr> |
| <tr><td class="paramname">K</td><td>is the output calculated shared key </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd>0 or an error code </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> |